Pregled sadržaja[Sakriti][Pokazati]
Računalna znanost temelji se na razumijevanju složenosti algoritama i struktura podataka.
Imate popis stavki koje je potrebno razvrstati, ali nemate vremena ili resursa za korištenje složenijeg algoritma za razvrstavanje.
Razvrstavanje umetanjem jedan je od najjednostavnijih algoritama sortiranja, ali može biti sporo za velike popise.
Jednostavna implementacija i razumijevanje učinili su ovu metodu omiljenom među programerima. Savršen je za male popise ili kada trebate brzo rješenje.
U ovom postu na blogu pogledat ćemo vremensku složenost sortiranja umetanjem. Ovaj algoritam se koristi za sortiranje nizova i ima vrijeme izvođenja O(n2). To znači da se vremenska složenost povećava s veličinom niza.
Međutim, ovaj algoritam često može biti brži od drugih algoritama za razvrstavanje, kao što je brzo sortiranje.
Pogledajmo pobliže kako funkcionira sortiranje umetanjem!
Što je algoritam sortiranja umetanjem?
Jedan po element, sortiranje umetanjem generira niz koji se može sortirati, koji se često naziva popisom.
Na primjer, sortiranje se primjenjuje u kompliciranim računalnim programima kao što su prevodioci, gdje je redoslijed tokena važan za interpretaciju programa.
Kako funkcionira sortiranje umetanjem?
Kada koristimo sortiranje umetanjem za sortiranje niza, algoritam počinje tako da pronađe najmanju stavku na popisu i umetne je na ispravan položaj.
Zatim pronalazi sljedeću najmanju stavku i umeće je na ispravan položaj i tako dalje.
Algoritam radi tako da se kreće kroz popis, uspoređujući svaku stavku s onom koja dolazi prije nje.
Ako su stavke u pogrešnom redoslijedu, algoritam ih mijenja. Zatim provjerava je li popis sortiran, a ako jest, algoritam završava.
U praksi se sortiranje umetanjem često implementira pomoću nekoliko redaka koda, što ga čini popularnim izborom za sortiranje malih nizova. Međutim, pri korištenju ovog algoritma treba uzeti u obzir vremensku složenost.
Primjer:
Evo primjera kako funkcionira sortiranje umetanjem. Koristit ćemo sljedeći niz:
1, 2, 3, 4, 5, 6
Algoritam počinje pronalaženjem najmanje stavke na popisu, a to je 1. Zatim je umeće na ispravan položaj, na prvu poziciju. Zatim pronalazi sljedeću najmanju stavku, a to je 2. Umeće je u ispravan položaj, a to je druga pozicija.
Zatim pronalazi sljedeću najmanju stavku, a to je 3. Umeće je u ispravan položaj, a to je treća pozicija.
Zatim pronalazi sljedeću najmanju stavku, a to je 4. Umeće je na ispravan položaj, a to je četvrta pozicija, i tako dalje. Popis je sada sređen!
Iz primjera možemo vidjeti da algoritam uzima šest usporedbi i zamjene kako bi sortirao popis. To je zato što je potrebno n2 usporedbe i zamjene za sortiranje popisa od n stavki. U ovom slučaju, n=6.
Kako poboljšati složenost vremena sortiranja umetanjem?
Dok sortiranje umetanjem ima vrijeme izvođenja O(n2), može se poboljšati korištenjem boljeg algoritma za sortiranje, kao što je brzo sortiranje.
Quicksort ima O(n log n) vrijeme izvođenja, što je mnogo brže od O(n2).
Međutim, u nekim slučajevima sortiranje umetanjem može biti brže od brzog sortiranja.
Na primjer, ako je popis već u redu, sortiranje umetanjem trajat će manje vremena od brzog sortiranja.
U praksi se sortiranje umetanjem često implementira pomoću nekoliko redaka koda, što ga čini popularnim izborom za sortiranje malih nizova.
Međutim, pri korištenju ovog algoritma treba uzeti u obzir vremensku složenost.
Vremenske složenosti
Složenost u najgorem slučaju O(n2):
Vremenska složenost raste s veličinom niza. Potrebno je n2 usporedbe i zamjene za sortiranje popisa od n stavki.
Na primjer, ako imamo niz veličine 1000, algoritam će uzeti 1,000,000 XNUMX XNUMX usporedbi i zamjena za sortiranje niza.
Složenost najboljeg slučaja O(n):
Vremenska složenost je ista kao i veličina ulaznog niza. ja
t treba n usporedbi i zamjena za razvrstavanje popisa od n stavki. Na primjer, razmotrite niz veličine 5. Algoritam će uzeti pet usporedbi i zamjena za sortiranje niza.
Prosječna složenost slučaja O(n2):
Vremenska složenost je između najgoreg i najboljeg slučaja složenosti u ovom slučaju.
Potrebno je n2 usporedbe i zamjene za sortiranje popisa od n stavki.
Dakle, sortiranje umetanjem je stabilan algoritam sortiranja.
Zašto je sortiranje umetanjem stabilno?
Razvrstavanje umetanjem je stabilno jer čuva redoslijed jednakih elemenata u ulaznom nizu.
To je važno za mnoge aplikacije, kao što je dohvaćanje podataka ili financijska analiza. Na primjer, ako imamo dva popisa brojeva i želimo ih usporediti, moramo se pobrinuti da se sačuva redoslijed elemenata.
Ako popisi nisu razvrstani, nećemo ih točno uspoređivati.
Ostavi odgovor