Sadržaj[Sakrij][Prikaži]
Računarska nauka se svodi na razumijevanje složenosti algoritama i struktura podataka.
Imate listu stavki koje treba sortirati, ali nemate vremena ili resursa da koristite složeniji algoritam za sortiranje.
Sortiranje umetanjem je jedan od najjednostavnijih algoritama za sortiranje, ali može biti sporo za velike liste.
Laka implementacija i razumijevanje učinili su ovu metodu omiljenom među programerima. Savršen je za male liste ili kada vam treba brzo rješenje.
U ovom postu na blogu ćemo pogledati 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 sa veličinom niza.
Međutim, ovaj algoritam često može biti brži od drugih algoritama za sortiranje, kao što je brzo sortiranje.
Pogledajmo bliže kako funkcionira sortiranje umetanjem!
Šta je algoritam sortiranja umetanjem?
Jedan po element, sortiranje umetanjem generiše niz koji se može sortirati, koji se često naziva listom.
Na primjer, sortiranje se primjenjuje u komplikovanim kompjuterskim programima kao što su kompajleri, gdje je redosljed tokena važan za interpretaciju programa.
Kako funkcionira sortiranje umetanjem?
Kada koristimo sortiranje umetanjem za sortiranje niza, algoritam počinje tako što pronađe najmanju stavku na listi i ubaci je na ispravan položaj.
Zatim pronalazi sljedeću najmanju stavku i ubacuje je na ispravan položaj, i tako dalje.
Algoritam radi tako što se kreće kroz listu, upoređujući svaku stavku s onom koja dolazi prije nje.
Ako su stavke u pogrešnom redoslijedu, algoritam ih zamjenjuje. Zatim provjerava da li je lista sortirana, i ako jeste, algoritam se završava.
U praksi se sortiranje umetanjem često implementira pomoću nekoliko linija 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. Koristićemo sledeći niz:
1, 2, 3, 4, 5, 6
Algoritam počinje tako što pronađe najmanju stavku na listi, a to je 1. Zatim je ubacuje na ispravnu poziciju, prvu poziciju. Zatim pronalazi sljedeću najmanju stavku, a to je 2. Ubacuje je na ispravan položaj, a to je druga pozicija.
Zatim pronalazi sljedeću najmanju stavku, a to je 3. Ubacuje je na ispravan položaj, a to je treća pozicija.
Zatim pronalazi sljedeću najmanju stavku, a to je 4. Ubacuje je na ispravan položaj, a to je četvrta pozicija, i tako dalje. Lista je sada sređena!
Iz primjera možemo vidjeti da algoritam uzima šest poređenja i zamjene kako bi sortirao listu. To je zato što je potrebno n2 poređenja i zamjene za sortiranje liste 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, koje 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 lista već u redu, sortiranje umetanjem će trajati manje vremena od brzog sortiranja.
U praksi se sortiranje umetanjem često implementira pomoću nekoliko linija 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 najgoreg slučaja O(n2):
Vremenska složenost raste sa veličinom niza. Potrebno je n2 poređenja i zamjene za sortiranje liste od n stavki.
Na primjer, ako imamo niz veličine 1000, algoritam će trebati 1,000,000 poređenja i zamjena da sortira niz.
Složenost najboljeg slučaja O(n):
Vremenska složenost je ista kao i veličina ulaznog niza. I
t treba n poređenja i zamjena da sortira listu od n stavki. Na primjer, uzmite u obzir niz veličine 5. Algoritam će uzeti pet poređenja 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 poređenja i zamjene za sortiranje liste od n stavki.
Dakle, sortiranje umetanjem je stabilan algoritam sortiranja.
Zašto je sortiranje umetanjem stabilno?
Sortiranje umetanjem je stabilno jer čuva redosljed jednakih elemenata u ulaznom nizu.
Ovo je važno za mnoge aplikacije, poput preuzimanja podataka ili finansijske analize. Na primjer, ako imamo dvije liste brojeva i želimo ih uporediti, moramo se pobrinuti da je redoslijed elemenata očuvan.
Ako liste nisu sortirane, nećemo ih tačno upoređivati.
Ostavite odgovor