e-gradiva     HTML CSS JavaScript Načrtovanje    
  logotip  
SERŠ Maribor Iskanje Primeri

Quicksort

Koda:
<script type="text/javascript">

//generiranje niza nakljucnih stevil
var DIM = 10;
tab = new tabelica(DIM);
function tabelica(n)
{
   this.length = n;
   for (var i = 1; i <= n; i++)
       { this[i] = Math.floor(Math.random()*10 +1) }
   return this ;
}

//izpis prvotne tabele
function izpisi(tab)
{
izp=""
  for (var i = 1; i <= DIM; i++) izp= izp + tab[i] + " ";
  document.getElementById("start").firstChild.nodeValue=izp;
}

//izpis rezultata
function izpisi1(tab)
{
izp=""
  for (var i = 1; i <= DIM; i++) izp= izp + tab[i] + " "
  document.getElementById("rezultat").firstChild.nodeValue=izp;
}

//sortiranje
function Quicksort(sp, zg)
{
 var k = tab[Math.round((sp+zg)/2)];
 var i = sp; var j = zg;
 while  (j > i)
   {
   while (tab[i] > k) i++;
   while (k > tab[j]) j--;
   if (i <= j)
     {
     var d = tab[i];
     tab[i] = tab[j];
     tab[j] = d;
     i++; j--;
     }
   }
 if (sp<j) Quicksort(sp, j);
 if (i<zg) Quicksort(i, zg);
}
</script>

<p>Prvotna tabela:<br />
<span id="start"></span></p>
<script type="text/javascript">
izpisi(tab);
</script>
<p>
<input type="button" onclick="Quicksort(1,DIM);izpisi1(tab)"
value="Sortiraj tabelo" />
</p>
<p>Sortirana tabela:<br />
<span id="rezultat"></span>
</p>
Izgled v
brskalniku:

Prvotna tabela:
 

Sortirana tabela:
 

Razlaga:

Ta primer nam tabelo naključnih števil uredi po velikosti od največjega do najmanjšega. Najprej se generira niz naključnih števil. To naredi postopek Math.random. Nato se s funkcijo izpisi izpiše prvotna tabela. S funkcijo Quicksort se prvotna tabela sortira po velikosti. Funkcija izpisi1 nam izpiše rezultat.

Sortiranje se kliče po kliku na gumbek. Z input type="button" se naredi gumbek, z onclick="Quicksort" pa se kliče funkcijo Quicksort, ko se gumb pritisne.

SERŠ Maribor : Strokovna gimnazija : 2004 : Rok Teržan