Sortiranje "par-nepar" — разлика између измена
Садржај обрисан Садржај додат
м Bot: Pretvaranje običnih izvora koristeći ref imena da bi se izbjegli duplikati (pogledaj također FAQ) |
м Робот: додато {{subst:User:Autobot/sandbox2}} |
||
Ред 1:
{{loš seminarski}}
{{спајање|Непарно-парно сортирање}}
{{algoritam-lat
| slika=Odd even sort animation.gif
| širina slike=250
| struktura=[[Niz]]
| namena=[[Алгоритми сортирања|sortiranje]]
| vkompleksnost= ''-{[[Велико O|O]](n²)}-''
}}
U [[informatika|informatici]], '''par-nepar sortiranje''' ({{jez-eng-lat|Odd–even sort}})<ref>{{cite web|last=Phillips|first=Malcolm|title=Array Sorting|url=http://homepages.ihug.co.nz/~aurora76/Malc/Sorting_Array.htm#Exchanging Sort Techniques|accessdate = 3. 8. 2011.}}</ref> predstavlja relativno jednostavan [[Алгоритми сортирања|algoritam za sortiranje]], koji je prvenstveno razvijen za upotrebu na paralelnim procesorima sa lokalnom povezanošću. On spada u grupu [[algoritam]]a koji [[Алгоритми сортирања#Алгоритми сортирања поређењем|sortiraju poređenjem]] i sličan je [[Sortiranje mehurom|sortiranju mehurom]], sa kojim deli mnoge karakteristike. Ideja je da se porede svi parovi indeksa (nepar, par) susednih elemenata niza i, ako je taj par u pogrešnom poretku (prvi veći od drugog), elementi menjaju mesta. U sledećem koraku se postupak ponavlja za parove indeksa (par, nepar). Koraci se smenjuju između te dve vrste parova dok se niz ne sortira.
== Sortiranje na paralelnim procesorima ==
Kod paralelnih procesora, koji imaju jednu vrednost po procesoru i lokalnu povezanost s leva u desno, procesori istovremeno izvršavaju upoređivanje i razmenu sa svojim susedima, naizmenično sa parovima nepar-par i par-nepar. Ovaj [[algoritam]] je predstavio N. Haberman [[1972]]. godine.<ref>N. Haberman (1972) "Parallel Neighbor Sort (or the Glory of the Induction Principle)," CMU Computer Science Report (available as Technical report AD-759 248, National Technical Information Service, US Department of Commerce, 5285 Port Royal Rd Sprigfield VA 22151).</ref> i pokazalo se da je efikasan na ovakvim procesorima.
[[Algoritam]] poboljšava efikasnost u slučaju rada na mašinama koje podržavaju više vrednosti po procesoru. U tzv. algoritmu ''Bodet-Stevensonovog par-nepar spajanja-razdvajanja'' ({{jez-eng-lat|Baudet–Stevenson odd–even merge-splitting}}) svaki procesor sortira svoj podniz, koristeći bilo koji efikasan [[algoritam]] za sortiranje, a zatim vrši spajanje sortiranog podniza sa svojim susedom, koji vrši uparivanje (naizmenično uzimajući jednu, pa drugu vrstu parova u svakom koraku).<ref>
{{citation
| journal = Advances in computers
| editors = Franz L. Alt and Marshall C. Yovits
| title = Parallel Sorting Algorithms
| author = S. Lakshmivarahan, S. K. Dhall, and L. L. Miller
| volume = 23
| publisher = Academic Press|pages=295-351|isbn=978-0-12-012123-6
|year=1984|url= http://books.google.com/books?id=Mo2Q-TEwKGUC&pg=PA322
}}</ref>
== Bačerovo par-nepar sortiranje spajanjem ==
Sličan, ali efikasniji [[algoritam]] za sortiranje je tzv. ''Bačerovo par-nepar sortiranje spajanjem'', koji koristi operacije ''uporedi–razmeni'' i ''perfektno mešanje''.<ref>
{{Cite book
| title = Algorithms in Java, Parts 1-4
| edition = 3rd
| author = Robert Sedgewick
| publisher = Addison-Wesley Professional
|year=2003|isbn=978-0-201-36120-9|pages=454-464|url= http://books.google.com/books?id=hyvdUQUmf2UC&pg=PA455
}}</ref>
Ovaj metod pokazao se efikasnim na paralelnim procesorima dalekog dometa konekcije.<ref>
{{Cite book
| title = Encyclopedia of Computer Science and Technology: Supplement 14
| author = Allen Kent and James G. Williams
| publisher = CRC Press
|year=1993|isbn=978-0-8247-2282-1|pages=33-38|url= http://books.google.com/books?id=F9Y4oZ9qZnYC&pg=PA33
}}</ref>
== Algoritam ==
Ispod je predstavljen [[algoritam]] za jednoprocesorske mašine. Poput [[Sortiranje mehurom|sortiranja mehurom]] on je jednostavan ali nedovoljno efikasan. Podrazumevamo da indeksiranje počinje od nule.
<source lang="javascript">
/* Assumes a is an array of values to be sorted. */
var sorted = false;
while(!sorted)
{
sorted=true;
for(var i = 1; i < list.length-1; i += 2)
{
if(a[i] > a[i+1])
swap(a, i, i+1);
}
}
for(var i = 0; i < list.length-1; i += 2)
{
if(a[i] > a[i+1])
swap(a, i, i+1);
}
}
}
</source>
== Reference ==
{{reflist}}
== Literatura ==
* {{Cite book |ref= harv|title = Encyclopedia of Computer Science and Technology: Supplement 14|author=Allen Kent and James G. Williams | publisher = CRC Press|year=1993 |isbn=978-0-8247-2282-1|url=http://books.google.com/books?id=F9Y4oZ9qZnYC&pg=PA33|ref=harv|pages=33-38}}
* {{Cite book |ref= harv|title = Algorithms in Java, Parts 1-4| edition = 3rd |last=Sedgewick|first=Robert| publisher = Addison-Wesley Professional |year=2003|isbn=978-0-201-36120-9 |url=http://books.google.com/books?id=hyvdUQUmf2UC&pg=PA455|pages=454-464}}
[[Категорија:
[[Категорија:
|