Kaip naudoti atrankos rūšiavimą

Kaip naudoti atrankos rūšiavimą

Atrankos rūšiavimas yra rūšiavimo technika, kuri pasirenka sąrašo elementą ir pakeičia jo vietą kitu. Jis pasirenka didžiausią elementą ir pakeičia jį aukščiausio sąrašo indekso elementu.





Algoritmas tai daro pakartotinai, kol sąrašas bus surūšiuotas. Jei nesate tikri, kaip veikia atrankos rūšiavimas, atėjote į reikiamą vietą. Toliau paaiškinsime tai išsamiau ir parodysime pavyzdį.





Atrankos rūšiavimas: arčiau

Tarkime, kad turite sąrašą: [39, 82, 2, 51, 30, 42, 7]. Norėdami surūšiuoti sąrašą naudodami pasirinkimo rūšiavimą, pirmiausia turėsite rasti didžiausią skaičių.





Naudojant pateiktą sąrašą, šis skaičius yra 82. Sukeiskite 82 su aukščiausio indekso skaičiumi (ty 7).

Po pirmojo leidimo nauja sąrašo tvarka bus tokia: [39, 7, 2, 51, 30, 42, 82]. Kiekvieną kartą, kai algoritmas peržiūri visą sąrašą, tai vadinama „leidimu“.



Atkreipkite dėmesį, kad rūšiavimo metu sąraše yra surūšiuotas ir nerūšiuotas sąrašas.

sukurkite pasirinktinį sąrašą „Excel 2013“

Susijęs: Kas yra „Big-O“ žymėjimas?





Pradinis sąrašas prasideda surūšiuotu nulinių elementų sąrašu ir nerūšiuotu visų elementų sąrašu. Tada po pirmojo leidimo jis turi surūšiuotą sąrašą, kuriame yra tik 82.

Antrojo leidimo metu didžiausias skaičius nerūšiuotame sub -sąraše bus 51. Šis skaičius bus pakeistas su 42, kad būtų pateikta nauja sąrašo tvarka:





kaip žaisti su draugais minecraft

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

Procesas kartojamas, kol visas sąrašas sutvarkomas. Žemiau esantis paveikslas apibendrina visą procesą:

Juodai paryškinti skaičiai rodo didžiausią tuo metu sąrašo vertę. Žalios spalvos rodo surūšiuotą sub -sąrašą.

Algoritmo analizė

Norėdami suprasti šio algoritmo sudėtingumą (naudojant „Big-O“ žymėjimą), atlikite toliau nurodytus veiksmus.

Pirmajame etape lyginami (n-1). Antrame perdavime (n-2). Trečiuoju perdavimu (n-3) ir taip toliau, kol (n-1) pravažiavimas leidžia atlikti tik vieną palyginimą.

Apibendrinant palyginimus, pateikiama žemiau:

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

Todėl atrankos rūšis yra O (n2).

Kodo įgyvendinimas

Kodas rodo funkcijas, kurias galite naudoti pasirinkdami rūšiavimą naudodami „Python“ ir „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;
}}

Perėjimas nuo pasirinkimo rūšiavimo prie sujungimo rūšiavimo

Kaip parodė aukščiau pateikta algoritmo analizė, pasirinkimo rūšiavimo algoritmas yra O (n2). Jis yra eksponentinio sudėtingumo, todėl yra neveiksmingas labai dideliems duomenų rinkiniams.

prijungti „iPhone“ prie televizoriaus per USB

Daug geresnis algoritmas būtų sujungimo rūšiavimas su sudėtingumu O (nlogn). Ir dabar jūs žinote, kaip veikia atrankos rūšiavimas, kitas sąrašas, skirtas rūšiavimo algoritmams, turėtų būti sujungimo rūšiavimas.

Dalintis Dalintis „Tweet“ Paštu 8 geriausios svetainės, kuriose galite nemokamai atsisiųsti garso knygas

Garso knygos yra puikus pramogų šaltinis ir daug lengviau virškinamas. Čia yra aštuonios geriausios svetainės, kurias galite nemokamai atsisiųsti.

Skaityti toliau
Susijusios temos
  • Programavimas
  • Programavimas
  • Algoritmai
Apie autorių Jerome'as Davidsonas(Paskelbti 22 straipsniai)

Džeromas yra „MakeUseOf“ personalo rašytojas. Jis apima straipsnius apie programavimą ir „Linux“. Jis taip pat yra kriptovaliutų entuziastas ir visada stebi kriptografijos pramonę.

Daugiau iš Jerome Davidson

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia