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.