Wszystko, co musisz wiedzieć o Quicksort w C ++



W tym artykule znajdziesz szczegółową i wszechstronną wiedzę na temat implementacji Quicksort w C ++ z przykładami.

Istnieje mnóstwo algorytmów sortowania. Znalezienie odpowiedniego dopasowania do aplikacji to zadanie, które wymaga krótkiego zrozumienia takich czynników, jak wydajność, złożoność czasowa, długość kodu itp. Konkretnego algorytmu. W tym poście przyjrzymy się wszystkim podstawowym koncepcjom wymaganym do zaimplementowania Quicksort w C ++ w następującej kolejności:

Zrozumienie algorytmu Quicksort

Tak jak Merge Sort , Quicksort jest zgodny ze strategią dziel i rządź. Stosując strategię dziel i zwyciężaj, dzielimy problem na wiele podproblemów i rozwiązujemy je rekurencyjnie. Najpierw zrozumiemy cały proces krok po kroku, a następnie, na przykładzie, rozwiniemy głębokie zrozumienie całego procesu.





  1. Najpierw poprosimy użytkownika o nieposortowaną tablicę.

  2. Gdy mamy już naszą nieposortowaną tablicę, musimy wybrać wartość przestawną z tablicy. Możemy wybrać dowolną wartość.



  3. Gdy już wybierzemy punkt obrotu, musimy ułożyć pozostałe elementy tablicy w taki sposób, aby wszystkie elementy mniejsze niż wartość pivot były umieszczone po prawej stronie wartości pivot, a wszystkie elementy większe niż pivot value należy umieścić po prawej stronie wartości pivot.

  4. Wykonujemy krok 3, aż otrzymamy naszą posortowaną tablicę.

Rozważmy teraz przykład, zaimplementujmy algorytm i zobaczmy, jak to działa.



Witaj [5, 4, 1, 11, 9, 6, 2, 3] w tym przykładzie zawsze będziemy uważać pivot za skrajny prawy element listy.

Sortuj listę c ++

Szybkie sortowanie w C ++

Przejdźmy przez każdy krok i zrozummy logikę, której używaliśmy do rozwiązania problemu.

  • Najpierw wybraliśmy „3” jako naszą oś obrotu i umieściliśmy wszystkie elementy mniejsze niż „3” po prawej stronie i wszystkie elementy większe niż „3” po prawej.

  • W tym momencie mamy 2 podproblemy. Najpierw rozwiążmy podproblem po prawej stronie. Wybraliśmy jeden jako nasz punkt obrotu i umieściliśmy „2” po prawej stronie.

  • Aby rozwiązać drugi podproblem, wybieramy „6” jako naszą oś obrotu i umieszczamy elementy, jak omówiliśmy wcześniej.

  • Mamy jeszcze 2 podproblemy. Pierwsza z nich jest rozwiązana przez wybranie 4 jako oś, a druga jest rozwiązana przez wybranie 9 jako osi. Wreszcie mamy naszą posortowaną tablicę z elementami umieszczonymi w indeksie podkreślenia.

Uwaga- Ważną kwestią do zrozumienia tutaj jest to, że wszystkie operacje odbywają się w tej samej tablicy. Nowe tablice nie są tworzone.

Pseudokod do Quicksort w C ++

QuickSort (array [], start_index, end_index) {if (start_index

Program Quicksort w C ++

Zrozumieliśmy algorytm i rozwinęliśmy głębokie zrozumienie działania algorytmu. Zaimplementujmy Quicksort w C ++ i napiszmy program do sortowania tablicy.

#include using namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int Partition (int array [], int start_index, int end_index) {int pivot = tablica [end_index] int i = (start_index - 1) for (int j = start_index j<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>Koszt NumberofElements<<'Enter the elements one by one: ' for(i=0i>Witaj [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) return 0}

Wynik:

Złożoność czasowa

Porozmawiajmy o najważniejszym aspekcie każdego algorytmu sortowania, czyli o złożoności czasowej. Mówi nam o wydajności algorytmu w różnych scenariuszach. Te wartości mogą nam pomóc w podjęciu decyzji, czy możemy użyć tego algorytmu w naszej aplikacji.

  • Najlepszy przypadek Na)
  • Średnia wielkość (nlogn)
  • Najgorszy przypadek- Na2)

Na tym kończymy ten artykuł Quicksort w C ++. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.