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

sortiranje_zamjenom_susjednih_elemenata.cpp


/*Ovaj program vrsi sortiranje niza prirodnih brojeva metodom zamjene susjednih elemenata (mjehurasto sortiranje; bubble sort).
Pretpostavimo da su elementi umjesto horizontalno poredani vertikalno.
Zamislimo da vrijednost kljuca svakog elementa predstavlja njegovu tezinu i da su
elementi mjehurici uronjeni u tank sa vodom. Tada svaki prolaz kroz niz tj.
mjehurice rezultuje pomjeranje navise mjehurica koji ima najmanju tezinu. Mjehuric
moze da se pomjera navise sve dok ne naidje na prepreku koju predstavlja mjehuric
koji ima manju tezinu. Tada taj mjehuric ukoliko je moguce nastavlja da se pomjera
navise. 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,n,j,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;}
 }//krajni lijevi indeks - mjehuric gore, krajnji desni indeks - mjehuric dole
 for (i=2;i<=n;i++)//n-1 prolaza kroz mjehurice, u prvom najlaksi se pomjeri gore
 for (j=n;j>=i;j--)//svaki iduci prolaz ne prolazi kroz mjehurice
 //koji su u prethodnim prolazima kao najlaksi pomjereni prema gore
 if (a[j-1]>a[j])
 {t=a[j-1];
 a[j-1]=a[j];
 a[j]=t;}//zamjenom susjednih mjehurica u svakom
 //prolazu postizemo to da se najlaksi mjehuric
 //od preostalih pomjeri prema gore
 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