[ _boby_ @ 21.02.2010. 21:08 ] @
Algoritam sortiranja Selection Sort sortira niz u rastućem poretku tako što se u prvom koraku pronalazi najveći element i on razmjenjuje mjesto sa posljednjim elementom niza. Zatim na isti način sortira ostatak niza (tj. kompletan niz osim posljednjeg elementa). Može i obrnuto, da sortira u opadajućem poretku, treba samo malo koda promijeniti. Evo kod za Selection Sort:

public static void selectionSort (int[] niz)
{
int temp,min;
for (int i=0; i<niz.length-1; i++) {
min = i;
for (int j = i+1; j<niz.length; j++)
if (niz[j]<niz[min])
min = j;
temp = niz;
niz = niz[min];
niz[min] = temp;
}
}


Treba napraviti da se u jednom koraku pronalaze najmanji i najveći element niza, oni mijenjaju mjesta sa prvim i posljednjim elementom, i na isti način se sortira ostatak niza.

[ miodrags @ 23.02.2010. 12:20 ] @
public static void selectionSort (int[] niz)
{
int l,d,g,temp,min,max;
l= niz.length;
d= 0;
for (int i=d; d<l && i<l-1; i++) {
max = min = i;
for (int j = i+1; j<l; j++)
{
if (niz[j]<niz[min])
min = j;
if (niz[j]>niz[max])
max = j;
}
temp = niz[d];
niz[d] = niz[min];
niz[min] = temp;
temp = niz[l];
niz[l] = niz[max];
niz[max] = temp;
d++;
l--;
}
}

[ miodrags @ 24.02.2010. 16:41 ] @
Evo koda:

Code:

public static void selectionSort (int[] niz)
{
   int l,i,j,temp,min,max;

   l= niz.length;
   for (i=0; i<l-1; i++) {
      max = min = i;
      for(j = i+1;j<l;j++)
      {
         if (niz[j]<niz[min]) min = j;
         if (niz[j]>niz[max]) max = j;
      }
      j--;
      if(i<min) {
         temp = niz[i];
         niz[i] = niz[min];
         niz[min] = temp;
      }
      if(max<j) {
         temp = niz[j];
         niz[j] = niz[max];
         niz[max] = temp;
      }
      l--;
   }
}