/ / Poredaj po umetcima: primjeri algoritma

Poredaj po umetcima: primjeri algoritma

Postoji nekoliko osnovnih algoritama za rješavanjezadaci sortiranja nizova. Jedna od najpoznatijih od njih je vrsta umetanja. Ova se metoda zbog svoje jasnoće i jednostavnosti, ali i male učinkovitosti koristi uglavnom u nastavi programiranja. Omogućuje vam razumijevanje osnovnih mehanizama sortiranja.

Opis algoritma

Suština algoritma za sortiranje umetanja ječinjenica da se unutar originalnog niza formira segment organiziran na željeni način. Svaki se element uspoređuje jedan s drugim s testiranim dijelom i ubacuje na svoje mjesto. Tako su nakon prolaska kroz sve elemente postrojeni u ispravnom redoslijedu.

Redoslijed odabira elemenata može biti bilo koji,mogu se odabrati proizvoljno ili prema nekom algoritmu. Najčešće se koristi sekvencijalno pretraživanje s početka polja, gdje se formira uređeni segment.

Algoritam sortiranja umetanja

Početak sorte mogao bi izgledati ovako:

  1. Uzmi prvi element niza.
  2. Budući da se nema s čime usporediti, razmotrite sam element kao uređeni niz.
  3. Prijeđite na drugu stavku.
  4. Usporedite ga s prvim na temelju pravila razvrstavanja.
  5. Zamijenite elemente ako je potrebno.
  6. Prve dvije stavke razmotrite kao poredani redoslijed.
  7. Prijeđite na treću stavku.
  8. Usporedite ga s drugim, po potrebi zamijenite mjesta.
  9. Ako je izvršena zamjena, usporedite je s prvom.
  10. Razmislite o tri stavke kao o redoslijedu.

I tako sve do kraja izvornog niza.

Poredaj po umetcima u stvarnom životu

Radi jasnoće, vrijedno je dati primjer kako se ovaj mehanizam sortiranja koristi u svakodnevnom životu.

Na primjer, uzmite novčanik. U odjeljku s novčanicama stotine, pet stotina i tisuću novčanica leže u neredu. Ovo je nered, u takvoj je gužvi teško odmah pronaći pravi komad papira. Niz računa se mora sortirati.

Prva je novčanica od 1000 rubalja, a odmah nakon nje - 100. Uzimamo stotinku i stavljamo je ispred. Treće u nizu je 500 rubalja, za nju je odgovarajuće mjesto između sto i tisuću.

Na isti način sortiramo dobivene karte prilikom igranja "Budala" kako bismo ih lakše kretali.

Poredaj po umetcima u stvarnom životu

Operatori i pomoćne funkcije

Način sortiranja umetanja uzima kao ulazizvorni niz koji se naređuje, funkcija usporedbe i, ako je potrebno, funkcija koja definira pravilo za nabrajanje elemenata. Najčešće se umjesto nje koristi operator regular petlje.

Prvi je element sam po sebi naručeni skup, pa usporedba počinje od drugog.

Algoritam često koristi pomoćnu funkciju za zamjenu dvije vrijednosti (swap). Koristi dodatnu privremenu varijablu, koja je intenzivna memorija i malo usporava kod.

Alternativa je kompenzacija grupne maseelemenata i naknadno umetanje sadašnjeg na ispražnjeni prostor. U ovom slučaju, prelazak na sljedeći element događa se kada je usporedba vratila pozitivan rezultat, što ukazuje na ispravan redoslijed.

Algoritam za razvrstavanje niza pomoću umetanja

Primjeri provedbe

Specifična implementacija uvelike ovisi o korištenom programskom jeziku, njegovoj sintaksi i strukturama.

Classic C implementacija pomoću privremene varijable za razmjenu vrijednosti:

int i, j, temp; za (i = 1; i <veličina; i ++) { temp = niz [i]; za (j = i - 1; j> = 0; j--) { if (niz [j] <temp) pauza;  niz [j + 1] = niz [j]; niz [j] = temp; } }

PHP implementacija:

funkcija insertion_sort (& $ a) { za ($ i = 1; $ i <count ($ a); $ i ++) { $ x = $ a [$ i]; za ($ j = $ i - 1; $ j> = 0 && $ a [$ j]> $ x; $ j--) { $ a [$ j + 1] = $ a [$ j]; } $ a [$ j + 1] = $ x; } }

Ovdje se najprije svi elementi koji ne zadovoljavaju uvjet sortiranja pomaknu udesno, a zatim se trenutni element ubaci u oslobođeni prostor.

Java kod pomoću petlje:

javno statičko ubacivanje prazninaSort (int [] arr){ za (int i = 1; i <arr.length; i ++) { int currElem = arr [i]; int prevKey = i - 1; dok je (prevKey> = 0 && arr [prevKey]> currElem) { arr [prevKey + 1] = arr [prevKey]; arr [prevKey] = currElem; prevKey--; } } }

Opće značenje koda ostaje nepromijenjeno: svaki element matrice se uzastopno uspoređuje s prethodnim i mijenja mjesta s njima ako je potrebno.

Procjena vremena izvođenja

Očito, u najboljem slučaju, na ulazualgoritma će biti niz koji je već pravilno ispravljen. U ovoj situaciji algoritam će jednostavno morati provjeriti svaki element da bi se uvjerio da je na njegovom mjestu bez razmjene. Stoga će vrijeme izvođenja izravno ovisiti o duljini izvornog niza O (n).

U najgorem slučaju ulazni podaci su niz,sortirano obrnutim redoslijedom. Ovo će zahtijevati veliki broj permutacija, vrijeme izvođenja ovisit će o broju elemenata u kvadratu.

Točan broj permutacija za potpuno neuređeni niz može se izračunati pomoću formule:

n * (n-1) / 2

, gdje je n duljina izvornog niza. Stoga je potrebno 4950 permutacija za postavljanje 100 elemenata u ispravnom redoslijedu.

Metoda umetanja vrlo je učinkovita za razvrstavanje malih ili djelomično uređenih nizova. Međutim, njegova se široka uporaba ne preporučuje zbog velike složenosti izračuna.

Algoritam se koristi kao pomoć u mnogim drugim složenijim metodama sortiranja.

Kako sortiranje umetanja djeluje

Sortiranje istih vrijednosti

Algoritam umetanja pripada tzvstabilne vrste. To znači da ne mijenja iste elemente, već zadržava njihov izvorni redoslijed. Indeks stabilnosti je često važan za pravilno naručivanje.

Iznad je sjajan vizualni primjer plesne vrste umetanja.

volio:
0
Popularni postovi
Duhovni razvoj
hrana
y