CalculatoareProgramare

Sortarerapidă ca metodă de programare

În 1960, K. A. bruma dezvoltat o metodă pentru sortarea rapidă a informațiilor, a devenit cel mai faimos. Astăzi este utilizat pe scară largă în programare, deoarece are o mulțime de proprietăți pozitive: poate fi folosit pentru cazuri generale, este nevoie de o creștere mică în memorie suplimentară, compatibile cu diferite tipuri de liste și ușor de implementat. Dar există dezavantaje, care are Quicksort: folosind munca a permis o mulțime de greșeli, și este oarecum instabil.

Cu toate acestea, aceasta este versiunea cea mai studiată. După prima Hoare de plată, de multe face studiul său dens. bază mare a fost stabilit pe probleme teoretice de a găsi timpul petrecut la locul de muncă, care este susținută de dovezi empirice. Au existat propuneri reale pentru a îmbunătăți algoritmul de bază și viteza crescută.

Sortarerapidă este foarte frecvente, acesta poate fi găsit peste tot. Pe baza ei metoda este implementată TList.Sort, prezentă în toate versiunile (cu excepția 1) Delphi, funcția de bibliotecă de timp a fost nevoie pentru a finaliza, qsort în C ++.

Principiul de bază al funcționării poate fi formulată ca o „divide și cucerește“. Aceasta se produce ruperea lista în două grupuri și sunt sortate pentru fiecare parte de la sine. Rezultă că mai multă atenție trebuie acordată procesului de separare, în care are loc următoarele: este determinată de un element de bază și a reamenajat relativ întreaga listă. Construit la stânga unui grup de candidați, a căror valoare este mai mică decât toate celelalte reguli de transfer. Se pare că elementul principal din lista sortată este în locul său de drept. Următoarea etapă - o provocare funcții de sortare recursive pentru ambele părți ale elementelor în raport cu baza. Se termină procesul funcționează numai în cazul în care lista conține doar un element, care urmează să fie sortate. Astfel, în scopul de a stăpâni o funcție de programare ca un fel rapid, este necesar să se cunoască activitatea de algoritmi de nivel inferior: a) alegerea elementului de bază; b) o listă a celor mai eficiente permutare pentru a produce două seturi, cu valori mai mici și mai mari.

Familiarizezi cu primele principii. La alegerea elementul de bază, ar trebui să fie în mod ideal selectat din lista de medie. Apoi, pe pauza este împărțit în două jumătăți egale. Doar calcula valoarea medie din listă este foarte dificil, astfel încât chiar și cea mai rapidă sortare ocolitoare această parte calcul. Dar alegerea elementului de bază cu valoarea maximă sau minimă - de asemenea, nu cea mai bună opțiune. În cazul în care o astfel de determinare a unuia creează liste goale vor fi garantate, iar al doilea plin. De aici concluzia că, elementul de bază ar trebui să fie aleasă una care este mai aproape de media, ci pe maxim și minim.

Odată ce o alegere este determinată, se poate trece la algoritmul de descompunere. Această așa-numitele bucle interioare sortare rapidă. Totul este construit pe doi indici de acces Rapid: în primul rând du-te peste elementele de la stânga la dreapta, a doua, dimpotrivă, de la dreapta la stânga. Începe dreptul de execuție de funcționare: indexul este pe listă și comparați toate valorile pentru principalele. Ciclul este complet atunci când elementul este mai mică sau egală cu linia de bază. Adică, există o comparație și scade valoarea indicelui. Pe mâna stângă, atunci când lucrarea este terminată mai mare sau egală valoare. Aici, valoarea comparație crește.

În acest stadiu al algoritmului de partiționare care cuprinde sortarerapidă, pot apărea două situații. Primul este faptul că indicele de pe stânga este mai mică decât dreapta. Aceasta indică o eroare, atunci există elemente pe care a fost declarat în listă sunt în ordine greșită. Ieșire - schimba locurile lor. A doua situație este atunci când ambele coloanei este egală cu sau încrucișate. Aceasta indică o separare de succes a listei, care este, lucrarea este acum completă.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ro.atomiyme.com. Theme powered by WordPress.