Kõik, mida peate teadma Quicksorti kohta C ++ keeles



See artikkel pakub üksikasjalikke ja põhjalikke teadmisi selle kohta, kuidas Quicksorti C ++ versioonis rakendada koos näidetega.

Sorteerimisalgoritme on hulgaliselt. Rakenduse jaoks sobiva sobivuse leidmine on ülesanne, mis nõuab lühikese arusaamise teguritest, nagu konkreetse algoritmi toimivus, aja keerukus, koodi pikkus jne. Selles postituses vaatame kõiki olulisi mõisteid, mis on vajalikud Quicksorti rakendamiseks C ++ -s järgmises järjekorras:

kuidas logerit Java-s kasutada

Quicksorti algoritmi mõistmine

Just nagu Ühenda sortimine , Quicksort järgib jagamise ja vallutamise strateegiat. Jagamise ja vallutamise strateegia abil jagame probleemi paljudeks alamprobleemideks ja lahendame need rekursiivselt. Esiteks mõistame kogu protsessi samm-sammult ja pärast seda arendame näite abil kogu protsessi sügavat mõistmist.





  1. Esiteks küsime kasutajalt sorteerimata massiivi.

  2. Kui meil on sorteerimata massiiv, peame massiivist valima pöördväärtuse. Saame valida mis tahes väärtuse.



  3. Kui oleme valinud pöördepunkti, siis peame massiivi muud elemendid korraldama nii, et kõik pöördväärtusest väiksemad elemendid tuleks asetada pöördväärtusest paremale ja kõik elemendid, mis on pöördest suuremad väärtus paigutatakse pöördväärtusest paremale.

  4. Teostame 3. sammu, kuni saame oma sorteeritud massiivi.

Vaatame nüüd ühte näidet ja rakendame algoritmi ning vaatame, kuidas see töötab.



Tere, [5, 4, 1, 11, 9, 6, 2, 3]. Selle näite puhul loeme pöördet alati loendi kõige paremaks elemendiks.

Kiirsort C ++ keeles

Vaatame läbi iga sammu ja mõistame loogikat, mida kasutasime probleemi lahendamiseks.

  • Kõigepealt valisime oma pöördepunktiks '3' ja paigutasime paremale kõik elemendid, mis olid väiksemad kui '3', ja paremale kõik, mis olid suuremad kui '3'.

  • Sel hetkel on meil 2 alamprobleemi. Lahendame kõigepealt paremal oleva alamprobleemi. Valisime ühe pöördepunktiks ja asetasime '2' paremale.

  • Teise alaprobleemi lahendamiseks valime pöördpunktiks „6” ja paigutame elemendid, nagu me varem arutasime.

  • Meil on veel 2 alamprobleemi. Esimene neist lahendatakse, valides pöördepunktiks 4 ja teine, valides pöördeks 9. Lõpuks on meil sorteeritud massiiv, kus elemendid on paigutatud allajoonimise indeksisse.

Märge- Siinkohal on oluline mõista, et kõik toimingud toimuvad samas massiivis. Uusi massiive ei looda.

Quicksorti pseudokood C ++ keeles

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

Quicksorti programm C ++ keeles

Mõistsime algoritmi ja arendasime sügavat arusaama algoritmi toimimisest. Rakendame Quicksorti C ++ -s ja kirjutame massiivi sortimiseks programmi.

#include nimeruumi kasutamine st void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int partitsioon (int massiiv [], int start_index, int end_index) {int pivot = massiiv [end_index] int i = (algusindeks - 1) jaoks (int j = algusindeks 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<>Elementide maksumuse arv<<'Enter the elements one by one: ' for(i=0i>Tere [i]} quickSort (Tere, 0, arv Elementide arv-1) printArray (Tere, Elementide arv) tagastus 0}

Väljund:

Aja keerukus

Räägime mis tahes sortimisalgoritmi kõige olulisemast aspektist, st aja keerukusest. See räägib meile algoritmi toimivusest erinevates stsenaariumides. Need väärtused aitavad meil otsustada, kas saame seda algoritmi oma rakenduses kasutada.

  • Parim juhtum Peal)
  • Keskmine juhtum (nlogn)
  • Halvimal juhul- Peal2)

Sellega jõuame selle Quicksorti C ++ artikli lõppu. Kui soovite rohkem teada saada, vaadake järgmist autor Edureka, usaldusväärne veebiõppe ettevõte. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java põhiliste kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.

visuaaltuudio õpetused algajatele