Uređivanje niza u rastućem i opadajućem poretku - Sortiranje niza

      Postoji više različitih algoritama za sortiranje niza. Neki su jednostavni za razumevanje i kodiranje, a neki štede računarsko vreme. 

        Najjednostavniji način za sortiranje niza je sledeći. Ukoliko sortiranje vršimo od najmanjeg ka najvećem elementu postupak se svodi na to da se od svih elementata niza pronađe najmanji, taj najmanji se postavi na prvu poziciju, zatim se od preostalih elemenata (znači onih od 2. do poslednje pozicije) nađe najmanji, on se postavi na drugu poziciju itd. Ovaj način, tj. ovaj algoritam je poželjno primenjivati na manjim nizovima zbog svoje jednostavnosti. Sa druge strane ovaj način je neefikasan za duže nizove jer je u poređenju sa ostalim algoritmima za sortiranje niza najsporiji. Evo kako ovaj algoritam radi:

        Ako npr. Imamo niz {7, 5, 2, 9, 4}

        Korak 1: Pronađemo najmanju vrednost, što je 2

        Korak2: Postavi tu vrednost na prvu poziciju, a element sa prve prebaci na drugu poziciju čime se dobija {2, 7, 5, 9, 4}

        Ponovi korake 1 i 2 za sve elemente od druge do poslednje pozicije.

        Sada je najmanji 4. Postavi ga na drugu poziciju. Dobijamo {2, 4, 7, 5, 9}

        Ponovi korake 1 i 2 za sve elemente od treće do poslednje pozicije.

        Sada je najmanji 5, pa dobijamo: {2, 4, 5, 7, 9}

        Ovi koraci se ponavljaju sve dok niz ne postane sortiran.

Pogledajte vrlo jednostano i zanimljivo objašnjenje kako radi ovaj algoritam: http://youtu.be/Ns4TPTC8whw

Primer:

Formiraj niz proizvoljnih celih brojeva od 10 elemenata, a zatim ga sortiraj od najmanjeg do najvećeg.

 

static void Main(string[] args)

        {

            int i, j, n, imin, popr;

            int[] Niz = new int[10];

            Console.WriteLine("Unesi elemente niza");

            for (i = 0; i < 10; i++)

            {

                Niz[i] = int.Parse(Console.ReadLine());

            }

       

            for (i = 0; i < 10; i++)

            {

                imin = i;

                for (j = i + 1; j < 10; j++)

                {

                    if (Niz[j] < Niz[imin])

                        imin = j;

                }

                popr = Niz[i];  // Algoritam za zamenu pozicije dva elementa

                Niz[i] = Niz[imin];

                Niz[imin] = popr;

            }

            Console.WriteLine("Sortirani niz od najmanjeg ka najvećem je: ");

            for (i = 0; i < 10; i++)

            {

                Console.Write(Niz[i] + " ");

            }

            Console.ReadKey();

        }

Izvršenjem ovog programa dobijamo:

              

Primer:

Formiraj niz proizvoljnih celih brojeva od 15 elemenata, a zatim ga sortiraj od najvećeg do najmanjeg.

 

static void Main(string[] args)

        {

            int i, j, popr, imax;

            int[] Niz = new int[15];

            Console.WriteLine("Unesi elemente niza");

            for (i = 0; i < 15; i++)

            {

                Niz[i] = int.Parse(Console.ReadLine());

            }

            for (i = 0; i < 15; i++)

            {

                imax = i;

                for (j = i + 1; j < 15; j++)

                {

                    if (Niz[j] > Niz[imax])

                        imax = j;

                }

                popr = Niz[i];

                Niz[i] = Niz[imax];

                Niz[imax] = popr;

            }

            Console.WriteLine("Sortirani niz je");

            for (i = 0; i < 15; i++)

            {

                Console.Write(Niz[i] + " ");

            }

            Console.ReadKey();

        }

 

Izvršenjem ovog programa dobijamo:

                 

Ukoliko želite, pogledajte još dva načina (dva algoritma) za sortiranje niza:  

http://youtu.be/lyZQPjUT5B4

http://youtu.be/XaqR3G_NVoo