Så här använder du urvalssortering

Så här använder du urvalssortering

Urvalssortering är en sorteringsteknik som väljer ett listobjekt och sedan byter plats med ett annat. Den väljer det största objektet och byter det sedan med ett objekt i listans högsta index.





Algoritmen gör detta upprepade gånger tills listan är sorterad. Om du inte är helt säker på hur urvalssortering fungerar har du kommit till rätt ställe. Vi kommer att förklara det mer djupare nedan, tillsammans med att visa dig ett exempel.





Urval Sortera: En närmare titt

Antag att du har listan: [39, 82, 2, 51, 30, 42, 7]. För att sortera listan med urvalssortering måste du först hitta det högsta numret i den.





Med den angivna listan är det numret 82. Byt 82 med talet i det högsta indexet (det vill säga 7).

Efter det första passet blir den nya listordningen: [39, 7, 2, 51, 30, 42, 82]. Varje gång algoritmen går igenom hela listan kallas det ett 'pass'.



Lägg märke till att listan bibehåller en sorterad underlista och en osorterad underlista under sorteringsprocessen.

bästa gratis musikspelare för Android

Relaterad: Vad är Big-O Notation?





Den ursprungliga listan börjar med en sorterad lista med noll objekt och en osorterad lista över alla objekt. Efter det första passet har den en sorterad lista som bara har siffran 82.

Vid det andra passet kommer det högsta numret i den osorterade underlistan att vara 51. Detta nummer kommer att bytas ut mot 42 för att ge den nya listan följande:





vad betyder lte på min telefon

[39, 7, 2, 42, 30, 51, 82].

Processen upprepas tills hela listan är sorterad. Figuren nedan sammanfattar hela processen:

Siffrorna i fet svart visar det högsta listvärdet vid den tiden. De i grönt visar den sorterade underlistan.

Algoritmanalys

För att få komplexiteten (med Big-O-notation) för denna algoritm, följ upp nedan:

Vid första passet görs (n-1) jämförelser. På andra passet, (n-2). På den tredje passningen, (n-3) och så vidare tills (n-1): e passet som bara gör en jämförelse.

Att summera jämförelserna enligt nedan ger:

(n-1)+ (n-1)+ (n-1)+ ...+ 1 = ((n-1) n)/2.

Därför är urvalssort O (n2).

Kodimplementering

Koden visar funktioner som du kan använda för att utföra urvalssortering med Python och Java.

Pytonorm:

def selectionSort(mylist):
for x in range(len(mylist) - 1, 0, -1):
max_idx = 0
for posn in range(1, x + 1):
if mylist[posn] > mylist[max_idx]:
max_idx = posn
temp = mylist[x]
mylist[x] = mylist[max_idx]
mylist[max_idx] = temp

Java:

void selectionSort(int my_array[]){
for (int x = 0; x {
int index = x;
for (int y = x + 1; y if (my_array[y] index = y; // find lowest index
}
}
int temp = my_array[index]; // temp is a temporary storage
my_array[index] = my_array[x];
my_array[x] = temp;
}}

Gå vidare från urval Sortera till Slå ihop Sortera

Som algoritmanalysen ovan har visat är algoritmen för urvalssort O (n2). Den har en exponentiell komplexitet och är därför ineffektiv för mycket stora datamängder.

varför används 100 procent av min disk

En mycket bättre algoritm att använda skulle vara sammanslagningssort med en komplexitet på O (nlogn). Och nu vet du hur urvalsortering fungerar. Nästa upp på din studielista för sorteringsalgoritmer bör vara sammanslagningssorteringen.

Dela med sig Dela med sig Tweet E-post De 8 bästa webbplatserna för att ladda ner ljudböcker gratis

Ljudböcker är en stor underhållningskälla och mycket lättare att smälta. Här är de åtta bästa webbplatserna där du kan ladda ner dem gratis.

Läs Nästa
Relaterade ämnen
  • Programmering
  • Programmering
  • Algoritmer
Om författaren Jerome Davidson(22 artiklar publicerade)

Jerome är personalförfattare på MakeUseOf. Han täcker artiklar om programmering och Linux. Han är också en kryptoentusiast och håller alltid koll på kryptoindustrin.

Mer från Jerome Davidson

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera