Двосмјерно сортирање замјеном сусједних елемената

dvosmjerno_sortiranje_zamjenom_susjednih_elemenata.cpp


/*Ovaj program vrsi sortiranje niza prirodnih brojeva metodom dvosmjerne zamjene susjednih elemenata. Osnovna
ideja ove metode za sortiranje je poboljsanje algoritma sortiranja zamjenom susjednih elemenata. Kod metode sortiranja zamjenom susjednih elemenata se javlja asimetrija; ako je na dnu najlaksi mjehuric, on ce isplivati
u jednom koraku, dok ako je na vrhu najtezi mjehuric on u svakom koraku moze da
potone za samo jedno mjesto. Kod dvosmjernog sortiranja zamjenom susjednih elemenata u jednom koraku laksi mjehurici
isplivaju prema povrsini, a u sljedecem koraku tezi mjehurici tonu ka dnu. Slozenost
ovog algoritma je O(n^2).

Program je izvrsen na oba operativna sistema (Linux i Windows) u Code::Blocks IDE okruzenju.*/

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
 int a[11];
 int i,j,n,L,D,k,t;
 cout<<"Unesite niz prirodnih brojeva; maksimalno 10 elem.(za kraj unosa unesite -1):\n";
 i=0;
 while (i!=-1)
 {i++;
 cin>>a[i];
 if (a[i]==-1)
 {n=i-1;
 i=-1;}
 }
 L=2;
 D=n;
 k=n;//u slucaju da je niz sortiran
 while (L<=D)
 {for (j=D;j>=L;j--)
 if (a[j-1]>a[j])
 {t=a[j-1];
 a[j-1]=a[j];
 a[j]=t;
 k=j;}//indeks mjehurica koji se pomjerio preme gore
 L=k+1;//indeks mjehurica ispod njega
 for (j=L;j<=D;j++)
 if (a[j-1]>a[j])
 {t=a[j-1];
 a[j-1]=a[j];
 a[j]=t;
 k=j;}//indeks mjehurica koji se pomjerio prema dole
 D=k-1;//indeks mjehurica iznad njega
 }
 cout<<"Sortiran niz (u rastucem redoslijedu):\n";
 for (i=1;i<=n;i++)
 cout<<a[i]<<" ";
 getchar();
 return 0;
}

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s