• Kurs C++ - strona główna
  • Kurs C++ - kontakt z autorem
  • Kurs C++ - mapa witryny
  • Kurs C++ - prawa autorskie
  • Kurs C++ - Kanał RSS
Informatyka krok po kroku
Użytkownik niezalogowany

Witaj nieznajomy

Reklamy
Randki

Sortowanie szybkie ( quick sort )

utworzono: 2004-09-05 zmodyfikowano: 2004-09-05 Autor: mgr inż. Marcin Nabiałek

Algorytm

Sortowanie szybkie (ang. Quick sort) jest uważane za najszybszą w praktyce metodę prostego sortowania. Algorytm jest łatwy do zrozumienia, trochę trudniejsza jest implementacja, mimo to zachęcam Cię bardzo do poznania tej metody sortowania.

Na bazie tego algorytmu powstają również mieszane metody sortowania, które charakteryzują się jeszcze większą szybkością od algorytmu quicksort przedstawionego w tym artykule.

Musisz wiedzieć, że w algorytmie sortowania szybkiego wykorzystuje się najczęściej rekurencję - jeśli nie wiesz czym jest rekurencja, radzę Ci zapoznać się z tym zagadnieniem zanim przejdziesz do analizy algorytmu.

Sprecyzujmy warunki sortowania:

Dane: n elementów oznaczonych x[1], x[2], x[3], ..., x[n] oraz operator porównania tych elementów, za pomocą którego możemy stwierdzić który z dwóch porównywanych elementów jest mniejszy, a który większy oraz operator równości, za pomocą którego możemy stwierdzić, kiedy dwa elementy są sobie równe.

Wynik: n elementów uporządkowanych w taki sposób, że pierwszy element jest najmniejszy w sensie operatora porównania elementów, a ostatni jest elementem największym w sensie tego samego operatora.

Algorytm w postaci listy kroków

  1. Zmiennej lewo przypisz 1, zmiennej prawo przypisz n
  2. Jeśli lewo<prawo, to:
    • Zmiennej p przypisz x[lewo]
    • Rozmieść elementy w tablicy x[lewo+1],...,x[prawo] tak, że na początku tablicy będą znajdowały się elementy mniejsze lub równe zmiennej p, a na końcu będą się znajdowały elementy większe od zmiennej p.
    • Zmiennej k przypisz indeks elementu w tablicy x[lewo+1], ..., x[prawo], takiego że, element ten jest mniejszy lub równy zmiennej p i jednocześnie znajduje się najbardziej na prawo wśród wszystkich elementów mniejszych lub równych zmiennej p.
    • Zamień miejscami elementy x[lewo] i x[k]
    • Zmiennej lewo przypisz lewo, zmiennej prawo przypisz k-1 i powtórz algorytm (cały krok 2)
    • Zmiennej lewo przypisz k+1, zmiennej prawo przypisz prawo i powtórz algorytm (cały krok 2)

dodajdo

1 | 2 | 3 | 4 | > | |>

Użytkowanie Serwisu oznacza zgodę na wykorzystywanie plików cookie. Szczegółowe informacje