Viss, kas jums jāzina par Quicksort C ++



Šis raksts sniegs jums detalizētu un visaptverošu informāciju par to, kā Quicksort ieviest C ++, izmantojot piemērus.

Ir daudz šķirošanas algoritmu. Pareizas piemērotības atrašana jūsu lietojumprogrammai ir uzdevums, kas prasa īsu izpratni par tādiem faktoriem kā konkrēta algoritma veiktspēja, laika sarežģītība, koda garums utt. Šajā ziņojumā mēs apskatīsim visus būtiskos jēdzienus, kas nepieciešami, lai Quicksort ieviestu C ++ šādā secībā:

Izpratne par Quicksort algoritmu

Tieši kā Apvienot Kārtot , Quicksort ievēro sadalīšanas un iekarošanas stratēģiju. Izmantojot sadalīšanas un iekarošanas stratēģiju, problēma tiek sadalīta daudzās apakšproblēmās un tiek atrisināta rekursīvi. Pirmkārt, mēs sapratīsim visu procesu soli pa solim un pēc tam ar piemēra palīdzību attīstīsim dziļu izpratni par visu procesu.





  1. Pirmkārt, mēs lūgsim no lietotāja nešķirotu masīvu.

  2. Kad mums ir nesakārtots masīvs, no masīva jāizvēlas pagrieziena vērtība. Mēs varam izvēlēties jebkuru vērtību.



  3. Pēc tam, kad mēs izvēlamies pagrieziena punktu, pēc tam mums ir jāorganizē pārējie masīva elementi tā, lai visi elementi, kas ir mazāki par šarnīra vērtību, būtu jānovieto pa labi no šarnīra vērtības un visi elementi, kas ir lielāki par šarnīru vērtība jānovieto pa labi no pagrieziena vērtības.

    kas ir __init__ pitonā
  4. Mēs veicam 3. darbību, līdz iegūstam sakārtoto masīvu.

Apskatīsim piemēru un ieviesīsim algoritmu un redzēsim, kā tas darbojas.



Sveiki, [5, 4, 1, 11, 9, 6, 2, 3] šajā piemērā mēs vienmēr uzskatīsim rakursi par saraksta labāko elementu.

Quicksort C ++

Izskatīsim katru soli un sapratīsim loģiku, kuru izmantojām problēmas risināšanai.

  • Pirmkārt, mēs izvēlējāmies “3” kā savu pagrieziena punktu un labajā pusē sakārtojām visus elementus, kas mazāki par “3”, un pa labi - visus, kas ir lielāki par “3”.

  • Šajā brīdī mums ir 2 apakšproblēmas. Vispirms atrisināsim apakšējā problēmu labajā pusē. Mēs izvēlējāmies vienu par savu pagrieziena punktu un novietojām ‘2’ pa labi.

  • Lai atrisinātu otro apakšproblēmu, par galveno rakstu izvēlamies “6” un izvietojam elementus, kā mēs iepriekš apspriedām.

  • Mums ir vēl 2 apakšproblēmas. Pirmais tiek atrisināts, atlasot 4 kā pagrieziena punktu, un otrais tiek atrisināts, atlasot 9 kā pagrieziena punktu. Visbeidzot, mums ir mūsu sakārtotais masīvs ar elementiem, kas ievietoti pasvītrojuma indeksā.

Piezīme- Šeit ir svarīgi saprast, ka visas darbības notiek vienā masīvā. Jauni masīvi netiek izveidoti.

Quicksort pseidokods C ++

QuickSort (masīvs [], start_index, end_index) {if (start_index

Quicksort programma C ++

Mēs sapratām algoritmu un izveidojām dziļu izpratni par algoritma darbību. Īstenosim Quicksort C ++ un uzrakstīsim programmu masīva kārtošanai.

#include izmantojot nosaukumvietu std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int nodalījums (int masīvs [], int start_index, int end_index) {int pivot = masīvs [end_index] int i = (start_index - 1) priekš (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<>Norēķinu izmaksu skaits<<'Enter the elements one by one: ' for(i=0i>Sveiki [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) return 0}

Izeja:

Laika sarežģītība

Parunāsim par jebkura šķirošanas algoritma vissvarīgāko aspektu, t.i., laika sarežģītību. Tas mums stāsta par algoritma veiktspēju dažādos scenārijos. Šīs vērtības var mums palīdzēt izlemt, vai mēs varam izmantot šo algoritmu mūsu lietojumprogrammai.

  • Labākais gadījums O (n)
  • Vidējais gadījums (nlogn)
  • Sliktākajā gadījumā- O (n2)

Ar to mēs esam nonākuši šajā Quicksort C ++ rakstā. Ja vēlaties uzzināt vairāk, iepazīstieties ar Autors: uzticams tiešsaistes mācību uzņēmums Edureka. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts, lai apmācītu jūs gan galvenajiem, gan uzlabotajiem Java jēdzieniem kopā ar dažādiem Java ietvariem, piemēram, Hibernate & Spring.

kā klonēt objektu Java

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.