Back

ⓘ Sortiranje podelom




                                     

ⓘ Sortiranje podelom

UnShuffle sort je sortiranje podelom ili sortiranje objedinjavanjem koje je razvijeno od strane Art S. Kagela. UnShuffle je najefikasniji kada se sortiraju podaci koji imaju malu entropiju, u smislu da se podaci dobro uredeni ili sadrže dobro uredene pod-sekvence. Trenutna implementacija je rezultat višegodišnjeg eksperimentiranja. Sortiranje uključuje dvije faze. Tokom prve faza podele predmeti se rasporeduju u promjenjivom broju uredenih listi korišćenjem strukture koja smanjuje broj poredenja. Nakon što su svi predmeti rasporedeni, sortirane liste se objedinjuju u jednu iylaynu listu. UnShuffle je jedan od retkih sortova koje se mogu direktno primeniti na povezane liste.

Algoritam koristi strukturu podataka pod nazivom stub engl. pile koja je uredeni red u kome dozvoljeno ubacivanje elemenata na početku liste, ukoliko je novi element manji ili jednak trenutnoj glavi ili na kraju liste, ako je novi element veća ili jednak repu liste. Nije dozvoljeno umetanje elemenata izmedu postojećih elemenata. To se obično sprovodi korišćenjem dvostruko povezane liste listi sa pokayivačima na početak i kraj dvostruko povezane liste sadrži elemente stuba kao i sledeći i prethodni stub. Detalji uklanjanja elemnata iz ulazne liste i dodavanjem elemenata u izlaznu listu su izostavljeni kao posebne implementacije.

Najbolji slučaj za UnShuffle u slučaju potpuno uredenih ili obrnuto urdenih nizova podataka sa samo jednim stubom korištenjem n-1 poredenja s preporučenom optimizaciju i bez objedinjavanja. Nema najgoreg slučaja i može se pokazati da nema niza čija je složenost vaća od O K / 4 * N) za fazu I + O N * log K) za fazu II pomoću korišćenjem idealnog objedinjavanja ya fazu II, gdje je K broj stubova kreiranim tokom faze rasporedivanja faza I.

Budući da sortira povezane liste, a ne nizove podataka samo se pokayivači premeštaju i zbog strukture stuba ne postoje skupe zamene, tako da vreme sortiranja zavisi od veličine podatka i složenosti ključa.

                                     

1. Faza I - Faza podele

  • Ako nema više elementa predi na fazu II.
  • Ako jednak stavi na kraj stuba, predi na korak 2.
  • Ubaci na kraj sledećeg stuba, predi na korak 2.
  • Ako je manji, a to nije prvi stub označi prethodni stub i predi na korak 5.
  • Uzmi sledeći element.
  • Ako je veći, a to nije posljednji stub stavi na vrh sledećeg stuba koji je prethodni uporeden, predi na korak 2, u suprotnom element je veći od kraja stuba.
  • Ako je veći, a to nije prvi stub oynači prethodni stub, predi na korak 10.
  • Uzmi prvi element i kreiraj stub #1 sa elementom#1 kao glavu i rep.
  • Uporedi sa krajem trenutnog stuba.
  • Ako je manji i to je posljednji stub kreiraj novi stub od elementa i dodati u listu stubova, predi na korak 2.
  • Ako je manje i to jeste prvi stub, stavi element na vrh stuba i predi na korak 2.
  • Ako jednak stvi na vrh stuba, predi na korak 2.
  • Uporedi sa vrhom stuba.
  • Odaberite posljednji stub za poredenje.
                                     

2. Faza II – Faza objedinjavanja

Koristi idelano objedinjavanje za spajanje stubova kreiranih u fazi I. Idelno objedinjavanje je algoritam koji se pokayuje kao najbolji za objedinjavanje uredenih redova.

Algoritam idealnog objedinjavanja

  • Ako je prvi red prazan onda ga odbaci. Ako nema više redova izadi, u suprotnom drugi red sada postaje prvi predji na, korak 3, u suprotnom predi na korak 5.
  • Ako je prvi red jedini preostao, predi na korak 3.
  • Sortiraj listu ulaznih redova u odnosu na relativnu vrednost elementnata sa vrha svakog redakako je lista redova tipično mala skoro svaki sort se može upotrebiti za ovo.
  • Ispiši element sa vrha prvog reda.
  • Binarnom pretragom pronadi drugi, pronadi gde ternutni vrh provg reda pripad u listi redova I ubaci prvi red na tom mestu u listi. Drugi red je sada prvi, predi na korak 3.
  • Uredi glave ulaznih redova u niz ili povezanu listu.
  • Uporedi novi vrh prvog reda sa novim vrhom drugog reda. Ako je manji predi na korak 3.
                                     

3.1. Optimizacije Optimizacija Faze I

Prati da li je poslednji element postavljen na početku ili na kraju nekog stuba i počni poredenje za sledeći element na istoj strani na primer ukoliko je poslednji element postavljen na kraju stuba počni poredenje sa poslednjim elementom iz poslednjeg stuba a ne sa početnim i predi na poredenje sa počenim ukoliko je element veći od poslednjeg u poslednjem stubu. U opštem slučaju i za jako uredene podatke ovo je jedina optimizacija osnpvnog algoritma, u porseku, N/2 poredenja I najviše N-1 poredenja za obrnuto uredene ulaze.

                                     

3.2. Optimizacije Optimizacija Faze II

Opšti algoritam Idealnog Objedinjavanja može se ponoljšati boljim upozanvanjem Faze Podele:

Kada se koristi za obejdinjavanje Unshuffle sorta, kreiranje liste redova i početno sortiranje stubova nije potrebno s obzirom da podela kreira stubove uredene po njihovim početnim elemnetima. U ovom slučaju objedinjavanje počinje u koraku #3.

S obzirom da porolaz kroz elemnte može biti pripremljen za svaki stub pre nego što je bilo koji drugi stub pripremljen ili pridodat je prednost za poredenje sledećeg elmenta iz prvog stuba sa početnim iz drugog stuba, nakon ispisivanja početnog elementa iz stuba, da bi se odredilo da li je poterbno preuredeivanje pretrage, a ako nije onda elment može odmah da se ispiše i postupak se ponavlja.

                                     

3.3. Optimizacije Optimeizacija za specijalne ulaze

Nizovi mogu biti tretirani i kao "tok" i podvrgnuti iterativnom sortiranju, a ne kreiranju povezane liste od niza. Zbog poziva funkcije u najboljem slučaju prednost ovoga može biti marginalna, ali korišćenje ne-iterativne vrezije koja niz tretira kao tok može biti i bolja.

Unshuffle nije stabilan algoritam sortiranja ali stabilnost se može postići ubacivanjem ulaznog zapisa na kraj ključa sortiranja.

Eliminacija dupliranog zapis se može izvesti i tokom Faze i tokom Faze II ili odložiti do Faze II.

                                     
  • администрација и кампања привлачења становништва Паметније окупљање и сортирање Ветеринарска помоћ Медицинска помоћ становништву. Убрзо су пристигли лекари
  • процесора, подсећа на људски мозак који комбинују процес, спајање или сортирање улазних података у изведеним резултатима. Зато што простирање таласа налик
  • reši brzo koliko i sortiranje na primer, ako je težina grane predstavljena kao ceo broj, onda bi se vreme koje je potrebno za sortiranje liste od m celih
  • од примера завади па владај алгоритма. Бинарна претрага је дихотомна, подели па владај претраживачки алгоритам. Често је потребно претражити скуп неких
  • основу за решавање рекурентних једначина које се јављају при анализи многих подели - па - владај алгоритама. Представљена је и доказана у књизи Introduction to
  • presortiranoj formi, što je skraćivalo vreme obrade koje se odnosi na sortiranje velikih količina podataka. Uredaji za obradu podataka su postali dostupni
  • iskorišćenosti prostora. Ideja je sortiranje podataka na x ili y koordinatu jednog ugla pravougaonika. Sortiranje na bilo koju od četiri koordinate daje
  • не мање, рекурсивним сортирањем сваког дела, и налепимо резултате заједно са стожером између. Ово користи иста стратегија подели па владај, мергсорта
  • разликују међу соковима, општи метод прераде сокова обухвата: Прање и сортирање екстракција Пресовање, филтрација и кларификација Пастеризација с мешањем

Users also searched:

...