Käyttäjän työkalut

Sivuston työkalut


java:taulukot:lajittelu

Taulukoiden lajittelu

Taulukko voidaan lajitella monella eri tavalla

Vaihtolajittelu

class VaihtoLajittelija
{
     int temp;
 
     public void lajittele(int[] taulukko)
     {
          for (int k = 0; k < taulukko.length - 1; k++)
          {
               for (int l = k+1; l < taulukko.length; l++)
               {
                    if (taulukko[k] > taulukko[l])
                    {
                         temp = taulukko[k];
                         taulukko[k] = taulukko[l];
                         taulukko[l] = temp;
                    }
               }
          }
     }
}

Valintalajittelu

class ValintaLajittelija
{
    public static void lajittele(int[] luvut )
    {
 
            int index, scan, min, temp;
 
            for (index = 0; index < luvut.length; index++)
            {
                min = index;
 
                for (scan = index + 1; scan < luvut.length; scan++)
                {
                    if (luvut [scan] < luvut [min])
                        min = scan;
                }
                temp = luvut[min];
                luvut[min] = luvut[index];
                luvut[index] = temp;
           }
    }
}

Lisäyslajittelu

class LisaysLajittelija
{
    public static void lajittele(int[] luvut )
    {
 
            int index, avain, paikka;
 
            for (index = 1; index < luvut.length; index++)
            {
                avain = luvut[index];
                paikka = index;
 
                while (paikka > 0 && luvut[paikka-1] > avain)
                {
                      luvut[paikka] = luvut[paikka-1];
                      paikka--;
                }
 
                luvut[paikka] = avain;
            }
    }
}

Quick-lajittelu

class QuickSortLajittelija
{
     public void lajittele(int eka, int viimeinen, int[] taulukko)
     {
          int temp;
          int alku, vasen, oikea;
 
          vasen = eka;
          oikea = viimeinen;
          alku = taulukko[(eka + viimeinen)/2];
 
          do
          {
               while (taulukko[vasen] < alku)
                    vasen = vasen + 1;
               while (alku < taulukko[oikea])
                    oikea = oikea - 1;
               if (vasen <= oikea)
               {
                    temp = taulukko[vasen];
                    taulukko[vasen] = taulukko[oikea];
                    taulukko [oikea] = temp;
                    vasen = vasen + 1;
                    oikea = oikea -1;
               }
 
          } while ((oikea > vasen));
 
          if (eka < oikea) lajittele(eka, oikea, taulukko);
          if (vasen < viimeinen) lajittele(vasen, viimeinen, taulukko);
     }
}

Shell-lajittelu

class ShellLajittelija
{
     public void lajittele(int[] taulukko)
     {
          int valimatka, maara = taulukko.length, temp;
          boolean vaihto=true;
          valimatka = maara/2;
          do
          {
               do
               {
                    vaihto = false;
                    for (int k = 0; k < (maara - valimatka); k++)
                    {
                         if (taulukko[k] > taulukko[k + valimatka])
                         {
                              temp = taulukko [k];
                              taulukko[k] = taulukko[k + valimatka];
                              taulukko[k + valimatka] = temp;
                              vaihto = true;
                         }
                    }
               } while(vaihto);
          } while ((valimatka /= 2) > 0);
     }
}

Kuplalajittelu

class KuplaLajittelija
{
     public void lajittele(int[] taulu)
     {
       int temp;
            for (int i=taulu.length; i > 0; i--)
            {
                for (int j=0; j < i-1;j++)
                     if (taulu[j] > taulu[j+1])
                     {
                           temp =  taulu[j];
                           taulu[j] = taulu[j+1];
                           taulu[j+1] = temp;
                     }
            }
     }
}
java/taulukot/lajittelu.txt · Viimeksi muutettu: 2015/08/13 16:54 / 127.0.0.1