Quicksort: Skillnad mellan sidversioner
Från Täpp-Anders
Hoppa till navigeringHoppa till sök
Anders (diskussion | bidrag) Created page with "Quicksort är en sorteringsalgoritm för att på ett effektivt och snabbt sätt sortera en större mängd data i storleksordning. Den uppfanns 1960 av Tony Hoare i dåvarande ..." |
Anders (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| (En mellanliggande sidversion av samma användare visas inte) | |||
| Rad 33: | Rad 33: | ||
sorted_array[j++] = greater[i] | sorted_array[j++] = greater[i] | ||
return sorted_array | return sorted_array | ||
[[Category:Programmering]] | |||
[[Category:Algoritmer]] | |||
Nuvarande version från 2 juli 2013 kl. 23.49
Quicksort är en sorteringsalgoritm för att på ett effektivt och snabbt sätt sortera en större mängd data i storleksordning. Den uppfanns 1960 av Tony Hoare i dåvarande Sovjetunionen vid Moskvas universitet. Sedan dess har enormt många implementationer av quicksort gjorts.
Principen bygger på följande steg
- Välj ett tal från listan att utgå från
- Ordna elementen så att alla tal större än det valda ligger ovanför och alla tal lägre än det valda ligger under
- Sortera subsetten rekursivt på samma vis
Quicksort är en jämförande sorteringsmetod.
Pseudokod
function quicksort(array)
if length(array) < 2
return array // en array med 0-1 element är redan sorterad
pivot = array[n/2]; // välj en sorteringspunkt, kan vara vilket som egentligen
new array lesser[n], greater[n] // skapa två arrayer som kan hålla resultaten
int i,j = 0
for each i in array
if i < pivot
lesser[j++] = array[i] // elementet tillhör lesser
else
greater[k++] = array[i] // elementet tillhör greater
quicksort(lesser) // Rekursivt sortera mindre element
quicksort(greater) // Rekursivt sortera större element
// När all rekursion är klar kommer exkveringen fortsätta här
int j=0
new sorted_array[n]
for each i in lesser
sorted_array[j++] = lesser[i]
sorted_array[j++] = pivot
for each i in greater
sorted_array[j++] = greater[i]
return sorted_array