Sve što trebate znati o Quicksort-u na C ++



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o tome kako implementirati Quicksort u C ++ s primjerima.

Postoji mnoštvo algoritama za sortiranje. Pronalaženje odgovarajuće pogodnosti za vaš zadatak zadatak je koji zahtijeva kratko razumijevanje čimbenika kao što su izvedba, vremenska složenost, duljina koda itd. Određenog algoritma. U ovom ćemo postu pogledati sve bitne koncepte potrebne za implementaciju Quicksort-a u C ++ sljedećim redoslijedom:

što je grah u javi

Razumijevanje algoritma brzog sortiranja

Baš kao Spoji sortiranje , Quicksort slijedi strategiju podijeli i osvoji. Korištenjem strategije dijeli i vladaj problem dijelimo na mnoge podprobleme i rješavamo ih rekurzivno. Prvo ćemo korak po korak razumjeti cijeli proces, a nakon toga ćemo uz pomoć primjera razviti duboko razumijevanje cijelog procesa.





  1. Prvo ćemo od korisnika tražiti nesortirani niz.

  2. Nakon što imamo svoj nesortirani niz, moramo odabrati pivot vrijednost iz niza. Možemo odabrati bilo koju vrijednost.



  3. Jednom kada izaberemo točku okretanja nakon toga, trebamo rasporediti ostale elemente niza na takav način da se svi elementi manji od vrijednosti pivota smjeste desno od vrijednosti pivota i svi elementi veći od pivota vrijednost treba postaviti desno od pivot vrijednosti.

  4. Izvodimo korak 3 dok ne dobijemo naš sortirani niz.

Razmotrimo sada primjer i implementiramo algoritam i vidimo kako on funkcionira.



Pozdrav [5, 4, 1, 11, 9, 6, 2, 3] za ovaj ćemo primjer pivot uvijek smatrati najdesnijim elementom popisa.

Brzi sortiranje na C ++

Prođimo kroz svaki korak i shvatimo logiku kojom smo rješavali problem.

java kako pretvoriti double u int
  • Prvo smo odabrali ‘3’ kao stožer i rasporedili sve elemente manje od ‘3’ udesno, a sve elemente veće od ‘3’ udesno.

  • U ovom trenutku imamo 2 podproblema. Prvo riješimo potproblem s desne strane. Odabrali smo jednog za svoj osovinski položaj i smjestili ‘2’ udesno.

  • Da bismo riješili drugi potproblem, odabiremo '6' kao svoj osovinski položaj i postavljamo elemente kao što smo ranije razgovarali.

  • Imamo još 2 potproblema. Prva se rješava odabirom 4 kao pivot, a druga se rješava odabirom 9 kao pivot. Konačno, imamo sortirani niz s elementima smještenim u indeks podcrtavanja.

Bilješka- Ovdje je važno shvatiti da se sve operacije odvijaju u istom nizu. Novi nizovi se ne stvaraju.

Pseudocode za Quicksort u C ++

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

Program brzog sortiranja na C ++

Razumjeli smo algoritam i razvili duboko razumijevanje rada algoritma. Implementirajmo Quicksort u C ++ i napišimo program za sortiranje niza.

#include using namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int particija (int niz [], int start_index, int end_index) {int pivot = niz [end_index] int i = (start_index - 1) za (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<>Trošak NumberofElements<<'Enter the elements one by one: ' for(i=0i>Pozdrav [i]} quickSort (Pozdrav, 0, NumberofElements-1) printArray (Pozdrav, NumberofElements) return 0}

Izlaz:

Složenost vremena

Razgovarajmo o najvažnijem aspektu bilo kojeg algoritma za sortiranje, tj. O vremenskoj složenosti. Govori nam o izvedbi algoritma u različitim scenarijima. Te nam vrijednosti mogu pomoći u odluci možemo li koristiti ovaj algoritam za svoju aplikaciju.

algoritmi za razvrstavanje c ++
  • Najbolji slučaj- Na)
  • Prosječni slučaj- (nlogn)
  • Najgori slučaj- Na2)

Ovime smo došli do kraja ovog članka Quicksort in C ++. Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.