You are on page 1of 13

Sortiranje nizova

• Sortiranje niza- postupak kojim se elementi niza


slažu po veličini.
• Problem koji se često javlja u programiranju
• Postoji više algoritama za njegovo rješavanje.
• Za nizove s manjim brojem elemenata (najviše
nekoliko stotina) mogu se uspješno koristiti
jednostavniji algoritmi.
• Za velike nizove koriste se nešto složeniji
algoritmi poput merge sort, quick sort
• Jedan od najjednostavnijih algoritama.
• Efikasan za nizove s manjim brojem
elemenata(do 500)
• U prvom koraku dovodi se na prvo mjesto
najmanji broj od preostalih I tako dalje, a
postupak se nastavlja sve dok se ne dođe do
potpunog rješenja.
• Na koji način?

• Vrijednost svakog elementa niza (počevši od


prvog) upoređuje s vrijednostima elemenata
koji dolaze poslije njega.
• Ako je redosljed dvaju elemenata koji se
upoređuju obratan od redosljeda sortiranja,
elementima se zamjene vrijednosti
• Upotrebom pomoćne promjenljive
• Početne vrijednosti x=6 i y=4 niz naredbi:
• t=x  vrijednost promjenljive x smještamo u
pomoćnu promjenljivu t, t=6;
• x=y  u promjenljivu x smještamo vrijednost
promjenljive y, x=4
• y=t  u promjenljivu z smještamo vrijednost
promjenljive t, y=6
• nakon čega dobijamo nove vrijednosti za x=4 i y=6
• primjer:
• u niz A upisane su vrijednosti:

A[0] A[1] A[2] A[3] A[4]


5 4 2 3 1
Prvi prolazak

A[0] A[1] A[2] A[3] A[4]  


5 4 2 3 1  
4 5 2 3 1  
2 5 4 3 1  
2 5 4 3 1  
1 5 4 3 2 rezultat 1.
prolaska
Drugi prolazak

A[0] A[1] A[2] A[3] A[4]  


1 5 4 3 2  
1 4 5 3 2  
1 3 5 4 2  
1 2 5 4 3 rezultat 2.
prolaska
Treći prolazak

A[0] A[1] A[2] A[3] A[4]  


1 2 5 4 3  
1 2 4 5 3  
1 2 3 5 4 rezultat 3.
prolaska
Četvrti prolazak

A[0] A[1] A[2] A[3] A[4]  


1 2 3 5 4  
1 2 3 4 5 rezultat 4.
prolaska
Funkcija za sortiranje elemenata niza u rastućem
poretku:

void sortiraj (int x[10])


{
int pom,i,j;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (x[j]<x[i])
{
/*zamjena vrijednosti*/
pom=x[i];
x[i]=x[j];
x[j]=pom;
}
}
• Zadatak: Napišite program koji omogućuje
unošenje niza od najviše 10 elemenata,
sortira ih i ispisuje u rastućem redoslijedu.
#include<stdio.h>
int main()
{
int a[10],i,j,n,pom;
printf("\n upisite broj elemenata niza: ");
scanf("%d",&n);
if (n<=10)
{
for(i=0;i<n;i++)
{
printf("%d: ",i+1);
scanf("%d",&a[i]);
}
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[j]<a[i])
{
/*zamjena vrijednosti*/
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
printf("sortirani niz je:\n");
for (i=0;i<n;i++)
printf("%d ",a[i]);
}
else
printf("upisali ste previse elemenata");
}

You might also like