Algoritam sortiranja odabirom s Python Code Primjer

⚡ Pametni sažetak

Sortiranje odabirom je algoritam usporedbe na mjestu koji sortira slučajni popis u uzlazni redoslijed tako da više puta odabire najmanju nesortiranu vrijednost i premješta je u sortirani odjeljak. Ovaj resurs objašnjava... Python primjer i njegova vremenska složenost.

  • 🎯 Osnovna ideja: Sortiranje odabirom više puta pronalazi minimalnu vrijednost u nesortiranom dijelu i premješta je u sortirani dio.
  • 🧠 Na mjestu: Sortira koristeći samo jednu dodatnu privremenu varijablu, dajući prostornu složenost O(1).
  • 🇧🇷 Složenost vremena: Izvršava se u vremenu O(n²) u najgorem, najboljem i prosječnom slučaju zbog ugniježđenih petlji.
  • 🐍 Python Primjer: Kratka funkcija s dvije petlje zamjenjuje minimum na mjesto dok se lista ne sortira.
  • ⚖️ Najbolja upotreba: Odgovara malim listama gdje je trošak zamjene nizak i svaka vrijednost se mora provjeriti.

Algoritam sortiranja odabirom

Što je odabir sortiranja?

ODABIR SORT je algoritam usporednog sortiranja koji se koristi za sortiranje nasumičnog popisa stavki uzlaznim redoslijedom. Usporedba ne zahtijeva puno dodatnog prostora. Zahtijeva samo jedan dodatni memorijski prostor za vremensku varijablu.

To je poznato kao na mjestu sortiranje. Sortiranje odabira ima vremensku složenost od O(n2) gdje je n ukupan broj stavki na listi. Vremenska složenost mjeri broj ponavljanja potrebnih za sortiranje popisa. Popis je podijeljen u dvije particije: prvi popis sadrži sortirane stavke, dok drugi popis sadrži nesortirane stavke.

Prema zadanim postavkama sortirani popis je prazan, a nesortirani popis sadrži sve elemente. Nesortirani popis se zatim skenira za najmanju vrijednost, koja se zatim stavlja na sortirani popis. Ovaj se postupak ponavlja dok se sve vrijednosti ne usporede i razvrstaju.

Kako funkcionira selekcijsko sortiranje?

Prva stavka u nesortiranoj particiji uspoređuje se sa svim vrijednostima na desnoj strani kako bi se provjerilo je li to minimalna vrijednost. Ako to nije minimalna vrijednost, tada se njegov položaj mijenja s minimalnom vrijednošću.

Primjer

  • Na primjer, ako je indeks minimalne vrijednosti 3, tada je vrijednost elementa s indeksom 3 smještena na indeks 0, dok je vrijednost koja je bila na indeksu 0 smještena na indeks 3. Ako je prvi element u nesortiranoj particiji minimalnu vrijednost, zatim vraća svoje pozicije.
  • Element koji je određen kao minimalna vrijednost tada se premješta u particiju na lijevoj strani, koja je sortirani popis.
  • Particionirana strana sada ima jedan element, dok nepodijeljena strana ima (n – 1) elemenata gdje je n ukupan broj elemenata na listi. Ovaj se postupak ponavlja iznova i iznova dok se sve stavke ne usporede i razvrstaju na temelju njihovih vrijednosti.

Definicija problema

Popis elemenata koji su poredani nasumičnim redoslijedom potrebno je poredati uzlaznim redoslijedom. Razmotrite sljedeći popis kao primjer.

[21,6,9,33,3]

Gornji popis treba sortirati kako bi se dobili sljedeći rezultati

[3,6,9,21,33]

Rješenje (Algoritam)

Korak 1) Dobijte vrijednost n koja je ukupna veličina niza

Korak 2) Podijelite popis na sortirane i nesortirane dijelove. Razvrstani odjeljak u početku je prazan, dok nerazvrstani odjeljak sadrži cijeli popis

Korak 3) Odaberite minimalnu vrijednost iz neparticioniranog odjeljka i smjestite je u sortirani odjeljak.

Korak 4) Ponovite postupak (n – 1) puta dok se svi elementi na popisu ne poredaju.

Vizualno predstavljanje

S obzirom na popis od pet elemenata, sljedeće slike ilustriraju kako algoritam sortiranja odabirom ponavlja vrijednosti prilikom njihovog sortiranja.

Sljedeća slika prikazuje nerazvrstani popis

Vizualno predstavljanje

Korak 1)

Vizualno predstavljanje

Prva vrijednost 21 se uspoređuje s ostalim vrijednostima kako bi se provjerilo je li to minimalna vrijednost.

Vizualno predstavljanje

3 je minimalna vrijednost, tako da su pozicije 21 i 3 zamijenjene. Vrijednosti sa zelenom pozadinom predstavljaju sortiranu particiju popisa.

Korak 2)

Vizualno predstavljanje

Vrijednost 6 koja je prvi element u nesortiranoj particiji uspoređuje se s ostalim vrijednostima kako bi se otkrilo postoji li niža vrijednost

Vizualno predstavljanje

Vrijednost 6 je minimalna vrijednost, tako da zadržava svoju poziciju.

Korak 3)

Vizualno predstavljanje

Prvi element nesortiranog popisa s vrijednošću 9 uspoređuje se s ostalim vrijednostima kako bi se provjerilo je li to minimalna vrijednost.

Vizualno predstavljanje

Vrijednost 9 je minimalna vrijednost, tako da zadržava svoju poziciju u sortiranoj particiji.

Korak 4)

Vizualno predstavljanje

Vrijednost 33 se uspoređuje s ostalim vrijednostima.

Vizualno predstavljanje

Vrijednost 21 niža je od 33, pa su pozicije zamijenjene kako bi se proizveo gornji novi popis.

Korak 5)

Vizualno predstavljanje

Imamo samo jednu preostalu vrijednost na nepodijeljenom popisu. Stoga je već sortirano.

Vizualno predstavljanje

Konačna lista je kao ona prikazana na gornjoj slici.

Program odabira sortiranja pomoću Python 3

Sljedeći kod prikazuje implementaciju odabira sortiranja pomoću Python 3

def selectionSort( itemsList ):
    n = len( itemsList )
    for i in range( n - 1 ):
        minValueIndex = i

        for j in range( i + 1, n ):
            if itemsList[j] < itemsList[minValueIndex] :
                minValueIndex = j

        if minValueIndex != i :
            temp = itemsList[i]
            itemsList[i] = itemsList[minValueIndex]
            itemsList[minValueIndex] = temp

    return itemsList


el = [21,6,9,33,3]

print(selectionSort(el))

Pokretanje gornjeg koda daje sljedeće rezultate

[3, 6, 9, 21, 33]

Code Objašnjenje

Objašnjenje koda je sljedeće

Program odabira sortiranja pomoću Python 3

Ovdje je Code obrazloženje:

  1. Definira funkciju pod nazivom selectionSort
  2. Dobiva ukupan broj elemenata na popisu. Ovo nam je potrebno kako bismo odredili broj prolaza koje treba napraviti prilikom uspoređivanja vrijednosti.
  3. Vanjska petlja. Koristi petlju za ponavljanje kroz vrijednosti popisa. Broj ponavljanja je (n – 1). Vrijednost n je 5, tako da (5 – 1) daje 4. To znači da će vanjske iteracije biti izvedene 4 puta. U svakoj iteraciji, vrijednost varijable i dodjeljuje se varijabli minValueIndex
  4. Unutarnja petlja. Koristi petlju za usporedbu krajnje lijeve vrijednosti s ostalim vrijednostima na desnoj strani. Međutim, vrijednost za j ne počinje s indeksom 0. Počinje s (i + 1). Ovo isključuje vrijednosti koje su već sortirane tako da se fokusiramo na stavke koje još nisu sortirane.
  5. Pronalazi minimalnu vrijednost na nesortiranom popisu i postavlja je na odgovarajuće mjesto
  6. Ažurira vrijednost minValueIndex prilikom zamjeneping uvjet je istinit
  7. Uspoređuje vrijednosti indeksnih brojeva minValueIndex i i da vidi jesu li jednaki
  8. Krajnja lijeva vrijednost pohranjuje se u vremenskoj varijabli
  9. Niža vrijednost s desne strane zauzima prvo mjesto
  10. Vrijednost koja je bila pohranjena u vremenskoj vrijednosti pohranjena je na poziciji koju je prethodno držala minimalna vrijednost
  11. Vraća sortirani popis kao rezultat funkcije
  12. Stvara popis el koji ima nasumične brojeve
  13. Ispišite sortirani popis nakon poziva funkcije Sortiranje odabira prosljeđujući el kao parametar.

Vremenska složenost odabira sortiranja

Složenost sortiranja koristi se za izražavanje broja vremena izvršenja koje je potrebno za sortiranje popisa. Implementacija ima dvije petlje.

Vanjska petlja koja odabire vrijednosti jednu po jednu s popisa izvodi se n puta, gdje je n ukupan broj vrijednosti na popisu.

Unutarnja petlja, koja uspoređuje vrijednost iz vanjske petlje s ostalim vrijednostima, također se izvršava n puta gdje je n ukupan broj elemenata na listi.

Stoga je broj izvršenja (n * n), što se također može izraziti kao O(n2).

Sortiranje odabira ima tri kategorije složenosti, naime;

  • Najgori slučaj – ovdje je navedeni popis u silaznom redoslijedu. Algoritam izvodi maksimalan broj izvršenja koji se izražava kao [Big-O] O(n2)
  • Najbolji slučaj – ovo se događa kada je navedeni popis već sortiran. Algoritam izvodi minimalni broj izvršavanja koji je izražen kao [Big-Omega] Ω(n2)
  • Prosječan slučaj – ovo se događa kada je popis u slučajnom redoslijedu. Prosječna složenost izražava se kao [Big-theta] Θ(n2)

Sortiranje odabirom ima prostornu složenost O(1) jer zahtijeva jednu vremensku varijablu koja se koristi za zamjenu.ping vrijednosti.

Kada koristiti selekcijsko sortiranje?

Razvrstavanje odabira najbolje je koristiti kada želite:

  • Morate poredati mali popis stavki uzlaznim redoslijedom
  • Kada je cijena zamjeneping vrijednosti su beznačajne
  • Također se koristi kada morate biti sigurni da su sve vrijednosti na popisu provjerene.

Prednosti odabira sortiranja

Sljedeće su prednosti selekcije

  • Vrlo dobro radi na malim listama
  • To je algoritam na mjestu. Ne zahtijeva puno prostora za sortiranje. Za držanje vremenske varijable potreban je samo jedan dodatni prostor.
  • Dobro radi na stavkama koje su već sortirane.

Nedostaci selekcijskog sortiranja

Sljedeći su nedostaci selekcije.

  • Loše radi na velikim popisima.
  • Broj ponavljanja učinjenih tijekom sortiranja je n-kvadrat, gdje je n ukupan broj elemenata na listi.
  • Drugi algoritmi, kao što je brzo sortiranje, imaju bolju izvedbu u usporedbi s selekcijskim sortiranjem.

Pitanja i odgovori

Sortiranje odabirom nije stabilno u svom osnovnom obliku, jer se zamjenjujeping Udaljeni elementi mogu promijeniti relativni redoslijed jednakih ključeva. Varijanta povezane liste ili pažljivo pomicanje mogu je učiniti stabilnom, ali standardna verzija niza je nestabilna.

Sortiranje odabirom skenira nesortirani dio kako bi pronašlo minimum i zamjenjuje ga na mjesto, praveći malo zamjena. Sortiranje umetanjem uzima svaki element i pomiče veće sortirane elemente udesno kako bi ga umetnulo. Sortiranje umetanjem obično je brže na gotovo sortiranim podacima.

Sortiranje odabirom izvodi najviše n-1 zamjena za popis od n elemenata, jednu po prolazu. Ovaj mali broj zamjena čini ga korisnim kada je pisanje u memoriju skupo, iako i dalje izvodi O(n²) usporedbi.

AI tutori mogu tracSortiranje odabira korak po korak, animiranje svake zamjene i provjera vremenske složenosti. Ova interaktivna povratna informacija pomaže početnicima da shvate kako se minimum odabire i pomiče tijekom svakog prolaza.

Da. AI asistenti za kodiranje mogu generirati sortiranje odabirom u mnogim jezicima, objasniti svaki redak i predložiti učinkovitije algoritme poput brzog sortiranja kada ulaz naraste. Uvijek testirajte generirani kod prije upotrebe.

Sažmite ovu objavu uz: