Rabu, 07 Juli 2010

BubbleSort

<html>
<head><title>bubblesort</title>
<script language = "Javascript">

function Urutkan(form)
{
DataKosong= false;
DataInputan = form.Data.value;
inputData = DataInputan.split (",");
for (var i = 0; i<inputData.length; i++)
{
inputData [i] = parseInt (inputData[i], 10);
if (isNaN (inputData [i]) )
{
DataKosong = true;
break;
}
}

inputData = bubbleSort (inputData, 0, inputData.length-1);
if (DataKosong)
{
alert ("Silakan Entri Dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus(); // jika data kosong, kursor akan berada di form data (focus)
}
else
{
form.Hasil.value = DataString (inputData,0);
}
}

function DataString (ArrayData, Angka)
{
if ( (ArrayData.length - 1) >= Angka)
return (ArrayData[Angka] + "," + DataString (ArrayData, (Angka + 1) ) );
else
return "";
}

function bubbleSort (ArrayData, Mulai, MulaiBaru)
{
for (var i=MulaiBaru-1; i>=Mulai; i--)
{
for (var j=Mulai; j<=i; j++)
{
if (ArrayData[j+1] > ArrayData [j] )
{
var DataTemporer = ArrayData [j];
ArrayData [j] = ArrayData [j+1];
ArrayData[j+1] = DataTemporer;
}
}
}
return ArrayData;
}

</script>
</head>

<body>
<center>
<form>
Masukan Deretan Angka, Pisahkan dengan Koma :
<hr>
<input type = text name=Data size=30 Value="">
<br>
<input type = button value="Urutkan" onClick="Urutkan (this.form)">
<br>
<br>
Hasil Pengurutan :
<hr>
<input type=text name=Hasil size=30>

</form>
</center>
</body>
</html&gt;

Contoh Program :

Algoritma Dijkstra

<html>
<head><title>Algoritma Dijkstra</title>
</head>

<body>
<script language = "javascript">
<!--
var nilaiacuan = 10000;
var takterdefinisi = -1;
var namaverteks = new Array('A', 'B', 'C', 'D', 'E', 'F');
var matriks = new Array(6);

function bobot(a,b)
{
return matriks[a][b];
}

function dijkstra(jumlahverteks,awal,d) //panjang matriks, dari, ke
{
var posisi = new Array(jumlahverteks);
var i;
var kunjungan = new Array(jumlahverteks);
var sebelum = new Array(jumlahverteks);

for (i=0; i<jumlahverteks; i++)
{
posisi[i] = nilaiacuan;
sebelum[i] = takterdefinisi;
kunjungan[i] = false;
}

posisi[awal] = 0;

var verteks;
for (verteks=0; verteks<jumlahverteks; verteks++)
{
var jarakterpendek = nilaiacuan;
var berhenti = -1;
for (i=0; i<jumlahverteks; i++)
{
if (!kunjungan[i])
{
if (posisi[i] <= jarakterpendek)
{
jarakterpendek = posisi[i];
berhenti = i;
}
}
}
kunjungan[berhenti] = true;
for (i=0; i<jumlahverteks; i++)
{
if (!kunjungan[i])
{
var w = bobot(berhenti, i);
if (posisi[berhenti]+w < posisi[i])
{
posisi[i] = posisi[berhenti] + w;
sebelum[i] = berhenti;
}
}
}
}

i = d;
if (posisi[i] < nilaiacuan)
{
var lintasan = namaverteks[i];
var verteks = i;
while (verteks>0)
{
verteks = sebelum[verteks];
if (verteks >= 0)
lintasan = namaverteks[verteks] + "->" + lintasan;
}
alert ("Jarak terpendek dari " +namaverteks[dari]+ " ke " +namaverteks[d]+ " : " + posisi[i] + " (" + lintasan + ")");
}
else
{
alert ("Tidak ada jalur");
}
}

function init()
{
var x = '~';

document.write('<pre>');
document.write(" A B C D E F" + '<br>');

document.write('A ' + (matriks[0]=new Array(0,2,3,x,x,x)) + '<br>');

document.write('B ' + (matriks[1]=new Array(2,0,3,6,x,x)) + '<br>');

document.write('C ' + (matriks[2]=new Array(3,3,0,3,5,x)) + '<br>');

document.write('D ' + (matriks[3]=new Array(x,6,3,0,1,3)) + '<br>');

document.write('E ' + (matriks[4]=new Array(x,x,5,1,0,1)) + '<br>');

document.write('F ' + (matriks[5]=new Array(x,x,x,3,1,0)) + '<br>');

document.write('</pre>');

document.write('<pre>A-2-B-6--D--3-F <br>');

document.write('\\ | /| / <br>');

document.write(' 3 3 3 1 1 <br>');

document.write(' \\ | / | / <br>');

document.write(' \\|/ |/ <br>');

document.write(' C--5-E <br> </pre>');

}

init();
var dari = 0; // A
var ke = 5; // F

dijkstra(matriks.length,dari,ke);

//-->
</script>
</body>
</html>

Contoh Program :