Viskas, ką reikia žinoti apie „Quicksort“ C ++ versijoje



Šis straipsnis suteiks jums išsamią ir išsamią žinių apie tai, kaip įdiegti „Quicksort“ C ++, su pavyzdžiais.

Yra gausybė rūšiavimo algoritmų. Tinkamo pritaikymo jūsų programai nustatymas yra užduotis, kuriai reikia trumpai suprasti veiksnius, pvz., Konkretaus algoritmo našumą, laiko sudėtingumą, kodo ilgį ir kt. Šiame įraše apžvelgsime visas pagrindines sąvokas, reikalingas „Quicksort“ diegti C ++, tokia tvarka:

Supratimas apie Quicksort algoritmą

Visai kaip Sujungti rūšiuoti , „Quicksort“ vadovaujasi skaldymo ir užkariavimo strategija. Naudodamiesi padalijimo ir užkariavimo strategija, problemą padalijame į daugelį problemų ir jas sprendžiame rekursiškai. Pirma, žingsnis po žingsnio suprasime visą procesą ir po to, pasitelkdami pavyzdį, išsiugdysime gilų viso proceso supratimą.





  1. Pirmiausia paprašysime nerūšiuoto masyvo iš vartotojo.

  2. Turėdami nerūšiuotą masyvą, turime pasirinkti masyvo sukimo vertę. Mes galime pasirinkti bet kokią vertę.



  3. Pasirinkę pasukimo tašką, po to turime sutvarkyti kitus masyvo elementus taip, kad visi elementai, mažesni už sukimo vertę, turėtų būti išdėstyti dešinėje nuo pasukimo vertės, o visi elementai, didesni už pasukimą vertė turi būti dedama į dešinę nuo pasukamosios vertės.

  4. Mes atliekame 3 žingsnį, kol gausime savo rūšiuojamą masyvą.

Dabar apsvarstykime pavyzdį ir įgyvendinkime algoritmą ir pažiūrėkime, kaip jis veikia.



Sveiki, [5, 4, 1, 11, 9, 6, 2, 3] šiame pavyzdyje mes visada laikysime posūkį dešiniuoju sąrašo elementu.

Greitasis pasirinkimas C ++

Peržvelkime kiekvieną žingsnį ir supraskime logiką, kurią naudojome spręsdami problemą.

  • Pirma, mes pasirinkome „3“ kaip savo sukamą vietą ir visus elementus, esančius mažiau nei „3“, išdėstėme dešinėje, o visus elementus, didesnius nei „3“, dešinėje.

  • Šiuo metu mes turime 2 paprogrames. Pirmiausia išspręskime dešiniąją problemą. Mes pasirinkome vieną kaip savo pasukimą ir padėjome '2' dešinėje.

  • Norėdami išspręsti antrą problemą, mes pasirenkame „6“ kaip pagrindinį elementą ir dedame elementus taip, kaip aptarėme anksčiau.

  • Mes turime dar 2 papročius. Pirmasis yra išspręstas pasirenkant 4 kaip pasukimą, o antrasis - pasirinkus 9 kaip pasukimą. Galiausiai turime surūšiuotą masyvą su elementais, esančiais pabraukimo rodyklėje.

Pastaba- Čia svarbu suprasti, kad visos operacijos vyksta tame pačiame masyve. Nauji masyvai nėra sukurti.

„Quicksort“ pseudokodas C ++

„QuickSort“ (masyvas [], pradžios_indeksas, pabaigos_indeksas) {if (pradžios_indeksas

„Quicksort“ programa C ++ versijoje

Mes supratome algoritmą ir sukūrėme gilų supratimą apie algoritmo veikimą. Įgyvendinkime „Quicksort“ C ++ versijoje ir parašykime programą masyvui rūšiuoti.

#include naudojant vardų sritį steigti negaliojantys mainų_elementai (int * a, int * b) {int temp = * a * a = * b * b = temp} int skaidinys (int masyvas [], int start_index, int end_index) {int pivot = masyvas [end_index] int i = (start_index - 1), skirtas (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<>Išlaidų skaičius<<'Enter the elements one by one: ' for(i=0i>Sveiki [i]} „quickSort“ („Hello“, 0, „NumberofElements-1“) „printArray“ („Hello, NumberofElements“) grąža 0}

Išvestis:

Laiko kompleksiškumas

Pakalbėkime apie svarbiausią bet kurio rūšiavimo algoritmo aspektą, t. Y. Laiko sudėtingumą. Jame pasakojama apie algoritmo našumą įvairiais scenarijais. Šios vertės gali padėti mums nuspręsti, ar galime naudoti šį algoritmą savo programai.

  • Geriausias atvejis O (n)
  • Vidutinis atvejis (nlogn)
  • Blogiausiu atveju- O (n2)

Tai mes baigėme šį „Quicksort“ C ++ straipsnyje. Jei norite sužinoti daugiau, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti mokyti jus tiek pagrindinėms, tiek pažangesnėms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje ir mes kuo greičiau susisieksime su jumis.

skirtumas tarp galutinai ir galutinai