Udvælgelsessortering er en sorteringsteknik, der vælger et listeelement og derefter bytter sted med et andet. Det vælger det største element og bytter det derefter med et element i listens højeste indeks.
Algoritmen gør dette gentagne gange, indtil listen er sorteret. Hvis du ikke er helt sikker på, hvordan valgsort fungerer, er du kommet til det rigtige sted. Vi forklarer det mere dybtgående herunder sammen med at vise dig et eksempel.
Udvælgelsessort: Et nærmere kig
Antag, at du har listen: [39, 82, 2, 51, 30, 42, 7]. For at sortere listen ved hjælp af valgsortering, skal du først finde det højeste tal i den.
Med den givne liste er dette nummer 82. Skift 82 med tallet i det højeste indeks (det vil sige 7).
Efter det første pas er den nye listeordre: [39, 7, 2, 51, 30, 42, 82]. Hver gang algoritmen går igennem hele listen, kaldes det et 'pass'.
Bemærk, at listen bevarer en sorteret underliste og en usorteret underliste under sorteringsprocessen.
hvordan finder man ip -adresse på mobiltelefon
Relaterede: Hvad er Big-O Notation?
Den originale liste begynder med en sorteret liste med nul poster og en usorteret liste over alle elementerne. Efter den første pasning har den en sorteret liste med kun tallet 82.
Ved den anden pasning vil det højeste tal i den usorterede deleliste være 51. Dette nummer vil blive udvekslet med 42 for at give den nye liste rækkefølge herunder:
hvad betyder lte på min telefon
[39, 7, 2, 42, 30, 51, 82].
Processen gentages, indtil hele listen er sorteret. Nedenstående figur opsummerer hele processen:
Tallene med fed sort viser den højeste listeværdi på det tidspunkt. De i grønt viser den sorterede underliste.
Algoritme analyse
For at få kompleksiteten (ved hjælp af Big-O-notation) af denne algoritme skal du følge op på nedenstående:
Ved første pas foretages (n-1) sammenligninger. På den anden pasning, (n-2). På den tredje pasning, (n-3) og så videre indtil den (n-1) th pas, som kun foretager en sammenligning.
Sammenfattende sammenligningerne som nedenfor giver:
(n-1)+ (n-1)+ (n-1)+ ...+ 1 = ((n-1) n)/2.
Derfor er valgsort O (n2).
Kodeimplementering
Koden viser funktioner, du kan bruge til at udføre valgsortering ved hjælp af Python og Java.
Python:
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å videre fra markering Sorter til fletningssorter
Som algoritmeanalysen ovenfor har vist, er selektionssorteringsalgoritmen O (n2). Det har en eksponentiel kompleksitet og er derfor ineffektiv for meget store datasæt.
hvordan man skifter harddisk fra skrivebeskyttet mac
En meget bedre algoritme at bruge ville være flette sortering med en kompleksitet på O (nlogn). Og nu ved du, hvordan udvælgelsessortering fungerer. Næste op på din undersøgelsesliste til sorteringsalgoritmer bør være sammensmeltningssorteringen.
Del Del Tweet E -mail De 8 bedste websteder til gratis download af lydbøgerLydbøger er en fantastisk underholdningskilde og meget lettere at fordøje. Her er de otte bedste websteder, hvor du kan downloade dem gratis.
Læs Næste Relaterede emner- Programmering
- Programmering
- Algoritmer
Jerome er personaleforfatter på MakeUseOf. Han dækker artikler om programmering og Linux. Han er også en kryptoentusiast og holder altid øje med kryptoindustrien.
Mere fra Jerome DavidsonAbonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!
Klik her for at abonnere