Uređivanje niza

Složeniji proces od  pretraživanja niza je uređivanje. Da bi se niz uredio neophodno je da se svaki element uporedi sa ostalim elementima, po potrbi, izvršiti njihovu međusobnu zamenu. Niz može biti sortiran u rastućem i opadajućem redosledu. Postoje nekoliko algoritama za sortiranje nizova.

Metod izbora (selection sort)

Zasniva se na veoma jednostavnoj ideji, izabrati najmanji element niza i dovesti ga na prvo mesto, zatim drugi najmanji, na drugo mesto, itd. do kraja niza.

Primer koji sortira niz u rastućem redosledu

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje*/
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
}
}
/*Ispis niza*/
cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;

}
system(„PAUSE“);
return EXIT_SUCCESS;
}

selekt sort

Pr1.

Napravite program koji niz a čiji elementi su celi brojevi uređuje u rastućem redosledu koristeći funkcije?

Rešenje:

#include
#include
using namespace std;
void ucitajniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
{
cout<<“ Unesi „<<i+1<<“ element niza“<<endl; cin>>a[i];
}
}
void razmeni(int *a, int *b)
{
int pom=*a;
*a=*b;
*b=pom;
}
void sortiraj(int a[], int n)
{
int i, j;
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++) { if (a[i]>a[j])
razmeni(&a[i], &a[j]);
}
}
}
void ispisiniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
cout<<“ a[„<<i+1<<„] je „<<a[i]<<endl;

}

int main(int argc, char *argv[])
{
int a[10],n;
cout<<„Unesi broj elemenata niza“<<endl; cin>>n;
ucitajniz(a,n);
sortiraj (a,n);
cout<<“ Sortirani niz:“<<endl;
ispisiniz(a,n);
system(„PAUSE“);
return EXIT_SUCCESS;
}

Metod mehuriće (babl sort)

Algoritam sortiranja bubble sort poredi dva susedna elementa niza i ako su pogrešno rasporežđeni zamenjuje im mesta. Posle porežđnja svih susednih parova najmanji od njih će isplivati na kraj niza. Zbog toga se ovaj metod naziva metod mehurića. Da bi se najmanji broj nesortiranog dela niza doveo na svoje mesto treba ponoviti postupak

Primer sortira niz metodom babl sort u rasući redosled

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

/* deklaracija niza i promenljive koje se koriste*/
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje- babl sort*/
for(i=n-1; i>0; i–)
{
for(j=0; j<i; j++)
{
if(a[j]>a[j+1])
{
pom=a[j];
a[j]=a[j+1];
a[j+1]=pom;
}
}
}
/*Ispis niza*/
cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
system(„PAUSE“);
return EXIT_SUCCESS;
}

bublesort.JPG

Metod isort

Insert sort, u svakom trenutku je početak niza sortiran a sortiranje se vrši tako što se jedan po jedan element niza sa kraja ubacuje na odgovarajuće mesto.

Primer prikazuje uređivanje niz u opadajućem redosledu metodom isort

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje*/

for(i=1; i<n; i++)
{
for(j=i; (j>0) && (a[j]>a[j-1]); j–)
{

pom=a[j];
a[j]=a[j-1];
a[j-1]=pom;
}
}
/* Ispis niz*/

cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;

}
system(„PAUSE“);
return EXIT_SUCCESS;
}

isort.JPG

Advertisements

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se /  Promeni )

Google photo

Komentarišet koristeći svoj Google nalog. Odjavite se /  Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se /  Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se /  Promeni )

Povezivanje sa %s