Massiivi kiire sortimine C++-s

Sorteerimine on programmeerimisel väga kasulik tööriist. Sageli on vaja järjestada nimekirja liikmed kasvavas või kahanevas järjekorras. Sorteeritud loend võimaldab kasutajal otsida ja leida teavet väga kiiresti. Loendi sorteerimine nõuab, et programm vahetaks väärtusi, seega peab algoritm olema ettevaatlik, et mitte kaotada vahetuse käigus väärtusi. On mitmeid erinevaid sorteerimisalgoritme, mis töötavad erinevatel kiirustel. Suuremate loendite puhul kasutatakse selle tõhususe tõttu sortimisalgoritmi nimega Quick Sort. Need juhised õpetavad teile, kuidas rakendada kiirsortimisalgoritmi täisarvude massiivile.

1
Looge funktsioon QuickSort. See on rekursiivne tühifunktsioon. See nõuab kolme parameetrit: massiiv (int massiiv) vasak piir (int muutuja) parem piir (int muutuja; massiivi suurus lahutatakse 1-ga)

2
Loo muutujad. Neid muutujaid kasutatakse loendi läbimiseks ja väärtuste vahetamiseks. Vaja on nelja muutujat:An int i (vasakpoolne piir)An int j (parempoolne piir)Int temp (ajutine muutuja, mida kasutatakse vahetamiseks ilma andmeid kaotamata) Int pivot (keskmise punkti väärtus, mis jagab loendi osadeks sortimise hõlbustamiseks)

3
Looge sortimise alustamiseks ajasilmus. Loendi indeksite läbimiseks kasutatakse tsüklit i ≤ j. Neid väärtusi muudetakse, kui sorditavad alamloendid muutuvad.

4
Korda läbi vasaku külje. Teine while-tsükkel, mis kontrollib, kas element on väiksem kui pivot, itereerib loendit. Kui see on väiksem kui pöördeväärtus, suurendage i 1 võrra. See kontrollib, kas alamloendi vasak pool vajab sorteerimist.

5
Korda läbi parema külje. Teine while-tsükkel, mis kontrollib, kas element on suurem kui pivot, itereerib loendit. Kui see on suurem kui pivot, vähendage j-i 1 võrra. See kontrollib, kas alamloendi parem pool vajab sorteerimist.

6
Alustage väärtuste vahetamist, kui i ≤ j. Loendi väärtuste vahetamine seab väärtused kasvavasse järjekorda. Ühe väärtuse määramine teisele ilma ajutise muutujata põhjustab andmete kadumise. Selle vältimiseks kasutatakse järgmist protseduuri: määrake loendi väärtus indeksi i juures väärtusele temp. Määrake indeksi j loendi väärtus indeksi i loendile. Määrake temp loendile indeksi j juures. Lisage 1 loendisse i. Lahutage j-st 1.

7
Kontrollige, kas kõik loendi pooled on sorteeritud. Seda tehakse kahe rekursiivse kõne abil. Esimene funktsioonikutse sorteerib piiride muutmisega loodud vasakpoolse alamloendi. Kui vasak pool on täielikult sorteeritud, sorteerib järgmine rekursiivne kutse parempoolse alamloendi, muutes selle piire. Kui vasak < j, kutsuge funktsioon vasakule ja i kui piirid. Kui parempoolne < i, kutsuge funktsioon välja i-ga ja paremal kui piirid. 8 Looge põhifunktsioonis loend. Massiiv võib olla mis tahes suurusega ja seda saab lähtestada nii selgesõnaliselt kui ka muude meetodite abil. 9 Sorteerimata loendi väljastamine for-tsükli abil. Silmuse piirid ulatuvad 0-st suuruseni(loend)/4. See koodiosa annab loendis olevate elementide arvu. 10 Kutsuge funktsiooni QuickSort välja. Kolm vajalikku parameetrit on järgmised: The listThe left bound (0)Parempoolne piir (massiivi suurus lahutatakse 1-ga) 11 Väljastage uus loend for-loopi abil. Jällegi lähevad tsükli piirid 0-st suuruseni(loend)/4. Selle põhjuseks on asjaolu, et sorteeritud loend sisaldab sama palju elemente kui sortimata loend (andmed ei läinud kaduma). 12 Käivitage programm, et näha sorteeritud loendit. Loendis olevate üksuste arv peaks mõlemas loendis olema sama.