Monday 26 March 2018

Stack dan Queue


Assalamualaikum wr.wb
Kali ini saya akan membahas tentang Stack dan Queue.

v  Stack (tumpukan)
 kumpulan elemen-elemen data yang disimpan dalam satu lajur linier, merubah bilangan decimal ke bilangan oktal .Kumpulan elemen data hanya boleh diakses pada satu lokasi saja yaitu posisi atas (TOP) tumpukan. Tumpukan digunakan dalam algoritma pengimbas (parsing), algoritma penilaian (evaluation) dan algoritma penjajahan balik (backtrack). Konsep utamanya adalah “LIFO” yaitu LAST IN FIRST OUT artinya eleme yg terakhir masuk akan pertama dikeluarkan dari tumpukan (stack).

Operasi yang diterapkan Stack sebagai berikut :
1.      Push   : digunakan untuk menambah item pada stack tumpukan paling Atas.
2.      Stack :  record
3.      Isi      : array [1….n] of tipe data
4.      Atas  : integer
5.      Pop    : digunakan untuk mengambil item pada stack pada tumpukan paling Atas.
6.      Clear  : digunakan untuk mengosongkan stack.
7.      Create Stack : membuat tumpukan baru dengan jumlah elemen kosong.

Contoh  : hasil 11
2
5
2
2
2
1
Langkah pertama

 11/2 = 5 sisa 1
 5/2  = 2 sisa 1
 2/2  = 1 sisa 0



1
0
1
1


                       
               



Angka 1 yang paling atas disebut Top  dan angka 1 yg terakhir disebut bottom.
Hasil awal di letakkan di akhir tumpukan dan yang pertama dikeluarkan adalah yang tumpukan teratas

Contoh 2 : 21010  : X8
                   210 / 8          hasil  26           sisa 2¹
                   26 / 8            hasil 3³              sisa 2²
Push


3
2
2

Pop (keluaran) 3,2,2
Jadi bilangan oktalnya adalah 3 2 2 .

Sebelumnya sudah tahu apa itu palindrome?.
Palindrome adalah suatu kata atau kalimat yang bisa dibaca baik dari depan maupun belakang dengan bunyi yang sama. Misal :
– Malam
– Katak
– Macam
–Kakak

Kalimat tersebut di atas jika dibaca dari depan maupun belakang akan memiliki urutan huruf yang sama.
Hubungan palindrome dengan Stack kali ini adalah saya akan menulis sebuah kode program yang digunakan untuk mengecek apakah sebuah kata atau kalimat merupakan palindrome atau bukan dengan bantuan Stack.

<html>
<head>
    <title>Struktur Data Stack</title>
    <script language ="JavaScript">
        var stack = new Array();
        var hasil = 0;
      
function testarr() {
  this.stack = new Array();

  this.Push = function(obj) {
    this.stack[this.stack.length] = obj;
  }

  this.Pop = function() {
    if (this.stack.length > 0) {
      var obj = this.stack[this.stack.length - 1];
      this.stack.splice(this.stack.length - 1, 1);
      return obj;
    } else {
      alert("");

    }
  }
}

function palindrome(data) {
  var mystack = new testarr();
  var text1;
  var text2 = "";
  var i;
  var t;
  text1 = data;
  i = text1.length;
  t = text1.length;

  do {
    mystack.Push(text1.substr(t - i, 1));
    i--;
  } while (i > 0);

  do {
    text2 += mystack.Pop();
    t--
  } while (t > 0);
  if (text1 === text2) {
    document.getElementById("txtCEK").innerHTML = "ini Palindrome";
   
  } else {
    document.getElementById("txtCEK").innerHTML = "ini Tidak Palindrome";
    PushData(text1);
  }

}
        function PushData(data)
        {
            stack.push(data);
        }
      
        function PopData()
        {
            var data_dari_stack = stack.pop();
            if(data_dari_stack == undefined)
                return "Stack Sudah Kosong";
            else
                return data_dari_stack;
        }
      
        function TampilkanStack(list)
        {
            list.options.length = 0;
            for(var i=0; i<stack.length; i++)
            {
                var data = new Option(stack[i]);
                list.options[list.options.length] = data;
            }
            PeekData();
            document.getElementById("txtBanyak").innerHTML = stack.length;
        }
      
        function HapusData()
        {
            stack = [];
        }
      
        function PeekData()
        {
            var hasil = stack.length;
            if(hasil == 0 || hasil == undefined)
                document.getElementById("txtAtas").innerHTML = "Kosong";
            else
                document.getElementById("txtAtas").innerHTML = stack[hasil - 1];
        }
    </script>
</head>
<body>
    <form>
        <p><input type=text name=textSimpan>
        <input type=button value="Masukkan ke Stack"
            onClick='palindrome(textSimpan.value);textSimpan.value="";
        TampilkanStack(mediaList);'></p>
        <p>Data di dalam stack:<br/>
        <select name="mediaList" size="12">
            <option>Tampilan data.....
        </select></p>
        <p><input type=text name=textAmbil size=20>
        <input type=button value="Ambil dari Stack" onClick="textAmbil.value = PopData();
            TampilkanStack(mediaList);">
        <input type=button value="Hapus Data" onClick="HapusData();
            TampilkanStack(mediaList);"><br>
        <label>Palindrome Data:</label><label id="txtCEK"></label><br>
        <label>Banyak Data:</label><label id="txtBanyak"></label><br>
        <label>Data Terakhir:</label><label id="txtAtas"></label></p>
    </form>
</body>
</html>

Maka akan Tampil seperti ini

Struktur Data Stack

Data di dalam stack:







v  Queue (antrian)
Konsepnya hampir sama dengan Stack , perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang berbeda . Penghapusan dilakukan pada bagian depan(front) dan penambahan berlaku pada bagian belakang (rear).

Contoh : 1 2 3 4 5
                  1 = depan
                  5 = belakang
Antrian dengan larik
1
2
3
4
5
                     0          1          2         3         4
    
      1= depan
      5= belakang

Contoh Programnya : 
<html>
<head>
    <title>Queue Tugas 5</title>

<style>

header {
height: 100px;
background-color: grey;
text-align: center;
}

body {
background-color: aqua;
}


</style>
    </head>
        <script type="text/javascript">
            var queue = new Array();
            var ganjil = new Array()
            var genap = new Array();
            var x=0;
            var y=0;
                function td()
                    {
                        for (var i = 0 ;i<20;i++)
                            {
                                queue[i] = Math.floor(Math.random()*(50-1))+1;
                                document.getElementById("hasil").innerHTML +=queue[i]+"<br>";
                            }
                    }

            function dequeue()
                {
                    var dambil = queue.pop();
                    if(dambil==undefined)
                    {
                        return "queue udah habis"
                    }
                    else
                    {
                        hasil = dambil%2;
                        if(hasil==0)
                        {
                            genap.push(dambil);
                            document.getElementById("gen").innerHTML += dambil+"<br>";
                            x++;
                            return dambil;
                        }
                        else
                        {
                            ganjil.push(dambil);
                            document.getElementById("gan").innerHTML += dambil+"<br>";
                            x++;
                            return dambil;
                        }
                    }
                }

            function jum()
                {
                    if(ganjil[y]==undefined)
                    {
                        a = genap[y]+0;
                        y++;
                        document.getElementById("has").innerHTML += a+"<br>";
                    }
                    else if(genap[y]==undefined)
                    {
                        b = ganjil[y]+0;
                        y++;
                        document.getElementById("has").innerHTML += b+"<br>";
                    }
                    else
                    {
                        c=ganjil[y]+genap[y];
                        y++;
                        document.getElementById("has").innerHTML +=c+"<br>";
                    }
                }

        </script>
<body>
<header>
    <h1 align="center">Queue Random</h1>
</header>  
<label id="hasil"></label><br>
<input type="button" value="Queue Random" onclick="td()"><br>
<input type="text" id="simpan"></td>
<input type="button" value="Scan Queue" onClick="simpan.value=dequeue()"><br>
<label>Genap :</label>
<label id="gen"></label>
<label>Ganjil :</label>
<label id="gan"></label>
<input type="button" value="Jumlahkan" onclick="jum()"><br>
<label>Hasil :</label><br>
<label id="has"></label><br>
</body>
</html>


Maka akan tampil seperti dibawah ini :

Queue Tugas 5

Queue Random








itulah penjelasan yang saya sampaikan ,semoga bermanfaat 😊, Wassalamualaikum wr.wb




Friday 2 March 2018


Assalamualaikum wr.wb
Hy teman-teman kali ini kita akan membahas tentang Bubble Sort ,Selection Sort , Insetion Sort dan Quick Sort.

1.      Bubble Sort
Bubble short adalah pengurutan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan tidak ada perubahan. Metode ini sering juga disebut “Metode Gelembung”.
 Misal 


2.      Selection Sort
      Selection sort adalah Pengurutan angka yg dilakukan dengan menyeleksi angka kemudian mencari element terbesar berikutnya dan menempatkan pada tempatnya

           Proses pengurutan dengan menggunakan metode selection
1. Mencari data terkecil dari data pertama sampai data terakhir, kemudian di   tukar   posisinya dengan data pertama.
2. mencari data terkecil dari data kedua sampai data terakhir, kemudian di tukar dengan posisinya dengan data kedua.
3. mencari data terkecil dari data ketiga sampai data terakhir, kemudian di tukar posisinya dengan data ketiga
4. dan seterusnya sampai semua data turut naik.
misal : 


           
3.      Insertion Sort
Insertion sort adalah mengurutkan data dengan cara menggeser data
Data dicek satu per satu mulai dari yang kedua sampai dengan yang terakhir. Apabila
ditemukan data yang lebih kecil daripada data sebelumnya, maka data tersebut disisipkan
pada posisi yang sesuai.
Misal :


Quick Sort 

Quick sort adalah algoritma sorting yang berdasarkan pembandingan dengan metoda divide-and-conqueror. Disebut Quick Sort, karena Algoritma quick sort mengurutkan dengan sangat cepat.
Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik pemecahan data menjadi partisi-partisi, sehingga metode ini disebut juga dengan nama partition exchange sort. Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen dipilih dari data,  kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa



Strategi divide-and-conqueror digunakan di dalam quicksort.
Di bawah iniakan dijelaskan langkah-langkahnya :

- Pilih nilai pivot Kita ambil nilai di tengah-tengah elemen sebagai sebagai nilaidari pivot  tetapi bisa nilai mana saja.  
- Partisi  Atur ulang semua elemen sedemikian rupa, lalu semua elemen yang lebihrendah daripada pivot dipindahkan ke sebelah kiri dari array/list dan semuaelemen yang lebih besar dari  pivot dipindahkan ke sebelah kanan dari array/list. Nilai yang sama dengan pivot  dapat diletakkan di mana saja dari array. Ingat,mungkin array/list akan dibagi dalam bagian yang tidak sama. 
- Urutkan semua bagian (kiri/kanan)  Aplikasikan algoritma quicksort secararekursif pada bagian sebelah kiri dan kanan. 

Contoh Program Quick Sort
<!DOCTYPE html>
<html lang="en">

<head>
<title>Array</title>
<style>

header {
height: 100px;
background-color: grey;
text-align: center;
}

judul {
font-family: crackman;
font-size: 20px;
color: white;
font-weight: bold;
float: left;
margin: 50px 10px 10px 10px;
}

section {
height: 1300px;
background-color: #d6d3d3;
padding: 10px;
}

</style>
    <script type="text/javascript">
   
function quick_Sort(Number) {
    if (Number.length <= 1) {
        return Number;
    } else {

        var kiri = [];
        var kanan = [];
        var newArray = [];
        var pivot = Number.pop();
        var length = Number.length;

        for (var i = 0; i < length; i++) {
            if (Number[i] <= pivot) {
                kiri.push(Number[i]);
            } else {
                kanan.push(Number[i]);
            }
        }

        return newArray.concat(quick_Sort(kiri), pivot, quick_Sort(kanan));
    }
}
function tampil(){
var myArray = [1,2,3,13,66,75,-1,-30,42,60,5,-1999,4,7,11,12,15,8,9,0];
var sortedArray = quick_Sort(myArray);
document.getElementById("urut").innerHTML = "Setelah di urutkan : "+sortedArray;
}
</script>
</head>

<body>

    <header>
    <judul>QUICK SORTING</judul>
    </header>
    <p id="belum">Belum urut :  1,2,3,13,66,75,-1,-30,42,60,5,-1999,,4,7,11,12,15,8,9,0</p>
    <button onclick="tampil()">Urutkan</button>
    <p id="urut"></p>
    <section>

</section>
</body>
</html>

maka akan tampil seperti dibawah ini :
Array
QUICK SORTING
Belum urut : 1,2,3,13,66,75,-1,-30,42,60,5,-1999,,4,7,11,12,15,8,9,0

 
Itulah ilmu yang saya dapat dari pembelajaran di kelas . Bila ada kesalahan mohon dimaafkan 

Wassalamualaikum wr.wb :)