Sortiranje "par-nepar" — разлика између измена
Садржај обрисан Садржај додат
м Разне исправке |
Нова страница: {{Infobox Algorithm |class=Алгоритам сортирања |image=File:Odd even sort animation.gif|Пример парно непарно сортирања… |
||
Ред 1:
{{Infobox Algorithm
|class=[[Алгоритам сортирања]]
|image=[[File:Odd even sort animation.gif|Пример парно непарно сортирања у низу са насумичним бројевима.|Пример парно непарно сортирања у низу са насумичним бројевима.]]
|caption=Пример парно непарно сортирања у низу са насумичним бројевима.
|data=[[Array data structure|Низ]]
|time=<math>O(n^2)</math>
|best-time=<math>O(n)</math>
|space= <math>O(1)</math>
|optimal=No
}}
У рачунарству непарно-парно сортирање или парно-непарно сортирање је релативно једноставан алгоритам,који је направљен за коришћење паралелних процесора са локалним међувезама.Ово је алгоритам који има велике сличности са [[Баблсорт|баблсорт алгоритмом]],са којим има доста карактеристика.Функционише тако што упоређује парне/непарне индексиране парове суседних елемената у листи,и ако су елементи на погрешним позицијама(ако је други елемент већи од првог)алгоритам врши замену.У следећем кораку се ово исто извршава за све суседне парно/непарне индексиране парове.Онда алгоритам алтернира између непарних/парних и парно/непарних коракасве док листа није потпуно сортирана.
== Сортирање процесорских листа ==
На паралелним процесорима,са једним елементом по процесору и само левом-десном локалном комшиском везом,процесори истовремено раде операције упоређивања и замене,алтернирајући између непарно/парне и парне/непарне парове.Овај алгоритам је оригинално представљен,и показано је да ефикасно ради на оваквим процесорима од старане Хабермана 1972. године.<br />
== Имплементација ==
'''Псеудо код'''<br />
function oddEvenSort(list) {<br />
function swap( list, i, j ){<br />
var temp = list[i];<br />
list[i] = list[j];<br />
list[j] = temp;<br />
}<br />
var sorted = false;<br />
while(!sorted)<br />
{<br />
sorted = true;<br />
for(var i = 1; i < list.length-1; i += 2)<br />
if(list[i] > list[i+1])<br />
{<br />
swap(list, i, i+1);<br />
sorted = false;<br />
}<br />
}<br />
for(var i = 0; i < list.length-1; i += 2)<br />
{<br />
if(list[i] > list[i+1])<br />
{<br />
swap(list, i, i+1);<br />
sorted = false;<br />
}<br />
}<br />
}<br />
}<br />
== Референце ==
# Introductions to algorithms -Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein,књигу можете погледати [http://bayanbox.ir/view/4177858657730907268/introduction-to-algorithms-3rd-edition.pdf овде]
# Алгоритми и структуре података - Мило Томашевић
# Увод у програмирање - Милан Шкарић
|