Struktura danych i algorytmy – Szybkie sortowanie

Reklamy

Szybkie sortowanie to bardzo wydajny algorytm sortowania oparty na partycjonowaniu tablicy danych na mniejsze tablice. Duża tablica jest podzielona na dwie tablice, z których jedna zawiera wartości mniejsze niż określona wartość, powiedzmy pivot, na podstawie której tworzona jest partycja, a inna tablica przechowuje wartości większe niż wartość pivot.

Quicksort partitions an array, a następnie dwukrotnie wywołuje siebie rekurencyjnie, aby posortować dwie wynikowe podtablice. Algorytm ten jest dość wydajny w przypadku dużych zbiorów danych, ponieważ jego średnia i najgorsza złożoność wynosi odpowiednio O (n2).

Podział w szybkim sortowaniu

Poniższa animowana reprezentacja wyjaśnia, jak aby znaleźć wartość przestawną w tablicy.

Wartość przestawna dzieli listę na dwie części. I rekurencyjnie, znajdujemy punkt obrotu dla każdej listy podrzędnej, dopóki wszystkie listy nie będą zawierały tylko jednego elementu.

Algorytm przestawny szybkiego sortowania

Opierając się na naszej wiedzy na temat partycjonowania w szybkim sortowaniu, będziemy teraz spróbuj napisać dla niego algorytm, który jest następujący.

Step 1 − Choose the highest index value has pivotStep 2 − Take two variables to point left and right of the list excluding pivotStep 3 − left points to the low indexStep 4 − right points to the highStep 5 − while value at left is less than pivot move rightStep 6 − while value at right is greater than pivot move leftStep 7 − if both step 5 and step 6 does not match swap left and rightStep 8 − if left ≥ right, the point where they met is new pivot

Pseudokod szybkiego sortowania Pivot

Pseudokod dla powyższego algorytmu można wyprowadzić jako –

Algorytm szybkiego sortowania

Korzystając z rekurencyjnego algorytmu przestawnego, otrzymujemy mniejsze możliwe partycje. Każda partycja jest następnie przetwarzana w celu szybkiego sortowania. Definiujemy algorytm rekurencyjny dla szybkiego sortowania w następujący sposób –

Step 1 − Make the right-most index value pivotStep 2 − partition the array using pivot valueStep 3 − quicksort left partition recursivelyStep 4 − quicksort right partition recursively

Pseudokod szybkiego sortowania

Aby uzyskać więcej informacji, zobaczmy pseudokod dla szybkiego algorytm sortowania –

Aby dowiedzieć się o implementacji szybkiego sortowania w języku programowania C, kliknij tutaj.

Reklamy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *