Rabu, 08 Januari 2014

STRUKTUR DATA

Struktur data Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.Sedangkan Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
Konstanta digunakan untuk menyatakan nilai tetap sedangkan variable digunakan dalam program untuk menyatakan nilai yang dapat berubah-ubah selang eksekusi berlangsung.
Ada empat istilah data, yaitu:
1.      Tipe data adalah jenis atau macam data di dalam suatu variable dalam bahasa pemrograman.
2.      Objek data mengacu kumpulan elemen, D (domain).
3.      Representasi data : Suatu mapping dari struktur data ‘d’ ke suatu set ke struktur data ‘e’ (d===e) misal bolean di representasikan dalam 0 dan 1.
4.      Struktur data biasa dipakai untuk mengelompokan beberapa  informasi yang terkait menjadi sebuah kesatuan.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data.


Secara garis besar type data dapat dikategorikan menjadi:
Type data sederhana.
*       Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.
*       Type data sederhana majemuk, misalnyaString
Struktur Data, meliputi:
*       Struktur data sederhana, misalnya array dan record.
*       Struktur data majemuk, yang terdiri dari:
a)      Linier : Stack, Queue, sertaList dan Multilist
b)      Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang standar yang biasanya digunakan dibidang informatika adalah:
Ø   List linier (Linked List) dan variasinya
Ø   Multilist
Ø   Stack (Tumpukan)
Ø   Queue (Antrian)
Ø   Tree ( Pohon)
Ø   Graph ( Graf )
B.   PEMBUATAN STRUKTUR DATA
Untuk membuat menjadi struktur data, kita harus melakukan dulu aktivitas terhadap objek data, yaitu :
v  Mendeskkripsikan kumpulan operasi sah yang diterapkan ke elemen-elemen objek data.
v  Menunjukan mekanisme kerja operasi-operasi.
Objek data integer ditambah operasi (+ , - , * , / , mod ,cell , floor , < , >) dan operasi-operasi lain yang memanipuasi objek data integer menyatakan struktur data.
Struktur data = Objek data + { Operasi manipulasi }.
Tahap pembuatan struktur data adalah :
Ø   Tahap pertama      : Spesifikasi
Pendeskripsian / spesifikasi struktur data menyatakan apa yang dapat dilakukan struktur data, bukan cara penerapannya.

Spesifikasi dapat dilakukan dengan dua cara, yaitu :
·         Spesifikasi secara formal
·         Spesifikasi secara informal
Ø  Tahap kedua : Implementasi
Implementasi menyatakan cara penerapan struktur data dengan struktur data yang telah ada.Implementasi struktur data adalah proses pendefinisian tipe data abstrak sehingga semua operasi dapat dieksekusi computer. Implementasi struktur penyinpanan item-item data serta algoritma-algoritma untuk implementasi operasi-operasi sehingga menjamin terpenuhinya karakteristik struktur data, relasi item-item data atau invariant pada struktur data itu.
Ø  Tahap ketiga : Pemrograman
Pemrograman terstruktur adalah penerjemahan menjadi pernyataan di bahasa pemrograman tertentu. Prosesnya terdiri dari :
·         Deklarasi yang mendefinisikan objek-objek data dan hubungannya…
·         Pembuatan prosedur / rutin untuk operasi-operasi dasar yang menjaga invariant pada struktur data itu .
Sesuai dengan relasi yang didefinisikan di spesifikasi perancangan harus memilih tipe-tipe data yang telah ada untuk merepresentasikan struktur data.
Struktur data di bangun menggunakan fasilitas pembentukan atau pembuatan struktur data yang disediakan bahasa seperti array, record, dan sebagainya atau yang telah di buat seperti stack, queue, atau himpunan menggunakan linked list.
Pembuatan struktur data adalah pembentukan tipe data lengkap yang mempunyai empat property berikut :
1.      Nama         : Identifier tipe data
2.      Domain     : Domain / himpunan semesta nilai di tipe data
3.      Konstanta (penyebutan anggota-anggotanya) : Cara penyebutan anggota-anggota tipe data
4.      Operasi-operasi terhadap tipe data itu (operator) : Daftar operasi terhadap anggota tipe data sehingga kelakuan objek data sesuai spesifikasi.



STACK
STACK adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu.


Operasi-operasi pada Stack
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas

Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas

Clear : digunakan untuk mengosongkan stack

IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong

IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh


Simulasi


 
 
Contoh Program Sederhana Menggunakan Bahasa C++ 

#include <iostream.h>
#include <conio.h>
#include <string.h>
struct
{

          char data [15][100], max [15];
          int i,j;
}
stack;

void isi () // push untuk memasukan data
{
          stack.i++;
          cout<<"masukan data: ";
          cin>>stack.max;
          strcpy (stack.data[stack.i],stack.max);
}
void buang () // pop untuk mengambil data
{
          if (stack.i>0)
          {
                cout<<"data yang terambil: "<<stack.data[stack.i]<<endl;
                     stack.i--; stack.j--;
          }
          else
                cout<<"tak ada data yang terambil"<<endl;
}
void muncul (int n)//print untuk menampilkan data
{
          if (stack.j>0)
          {
                for (int e=n; e>=1; e--)
                {
                     cout<<stack.data[e]<<endl;
                }
          }
          else
          cout<<"tak ada data tersimpan"<<endl;
}
void hapus () // clear untuk menghapus data
{
          stack.j=0; stack.i=0;
}

void main ()
{
          int n,plh;
          awal:
          clrscr();
          cout<<"contoh program stack (tumpukan)\n\n";
          cout<<"maksimal tumpukan data: "; cin>>n;
          stack.data[n];
          stack.i=0;
          stack.j=0;
          pilihan:
          clrscr();
          cout<<"\n1. push \n2. pop \n3. print \n4. clear \n5. quit \n";
          cout<<"\npilih :"; cin>>plh;
          cout<<"\n";

          if (plh==1)
                {
                     if (stack.j<n)
                     {
                          stack.j++; isi();
                     }
                     else
                     {
                          cout<<"tumpukan penuh"<<endl; getch();
                     }
                     goto pilihan;
          }
          else if (plh==2)
          {
                     buang(); getch(); goto pilihan;
          }
          else if (plh==3)
          {
                     muncul (stack.i); getch(); goto pilihan;
          }
          else if (plh==4)
          {
                     hapus();  getch(); goto pilihan;
          }
          else if (plh==5)
          {
                     getch(); goto awal;
          }
          else
          {
                     cout<<"input yang anda masukan salah !!!";
                     getch(); goto awal;
          }
}


Contoh Program Sederhana Menggunakkan Java

public class Tumpukan  {
    private jenis[] data= (jenis[])new Object[10];
    private int posisi=0;
    public void push(jenis isi){
        data[posisi++] = isi;
    }
    public jenis pop(){
        return data[--posisi];
    }
    public jenis peek(){
        return data[posisi-1];
    }
    public boolean isEmpty(){
        return(posisi==0);
    }
    public boolean isFull(){
        return(posisi==data.length);
    }
    public void clear(){
        posisi=0;
    }
}



Queue
 
Queue/antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan biasa disebutrear/tail, sedang ujung penghapusa disebut front/head. Fenomena yang muncul adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil. Queue berdisiplin FIFO (First In, First Out). Queue merupakan kasus khusus ordered list. Dengan karakteristik terbatas itu maka kita dapat melakukan optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.
Misalnya Queue Q= (a1,a2,a3…,an), maka
1.Elemen a1 adalah elemen paling depan
2.Elemen ai adalah diatas elemen ai-1, di mana 1<i<n.
3.Elemen an adalah elemen paling belakang
Head (atau front) menunjuk ke awal antrian Q (atau elemen terdepan), sedangkan tail ( rear) menunjuk akhir antrian Q (atau elemen paling belakang).Disiplin FIFO pada Queue berimplikasi jika elemen A, B, C, D, E dimasukkan ke Queue, maka penghapusan/pengambilan elemen akan terjadi dengan urutan A, B, C, D, E.

2.2 Karakteristik Queue
Karakteristik penting antrian sebagai berikut :
1.Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
2.Head/front (elemen terdepan dari antrian ).
3.Tail/rear (elemen terakhir dari antrian ).
4.Jumlah elemen pada antrian (count).
5.Status/kondisi antrian.
Kondisi antrian yang menjadi perhatian adalah :
  • Penuh
Bila elemen di antrian  mencapai  kapasitas  maksimum  antrian. Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan Overflow.
  • Kosong
Bila tidak ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.

2.3 Operasi-Operasi Pokok di Queue
  • Operasi-operasi pokok antrian sebagai berikut :
1.createQueue (Q), atau constructor menciptakan antrian kosong Q.
2.addQueue (Q, X) memasukkan elemen X sebagai elemen akhir di Q.
3.removeQueue (Q, X)atau mengambil elemen depan di antrian Q ke elemenX.

  • Operasi-operasi pengaksesan tambahan yang dapat dilakukan adalah :
            1.headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
2.tailQueue (Q), mengirim elemen tanpa menghapusnya.

  • Operasi-0perasi Query tambahan yang dapat dilakukan adalah :
1.isEmptyQueue (Q), mengirim apakah antrian Q adalah kosong.
2.isFullQueue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas antrian Q didefinisikan.
3.isOverflowQueue (Q), mengirim apakah antrian Q telah mengalamioverflow.
4.isUnderflowQueue (Q), mengirim apakah antrian Q mengalamiunderflow.
                 
  • Operasi-operasi terhadap seluruh antrian Q antara lain adalah :
1.sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
2.isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana untuk menyatakan apa pun mengenai implementasinya.

2.4. Pengunaan Queue
Meski Queue sangat sederhana, namun Queue merupakan kakas dasar penyelesaian masalah-masalah besar. penggunaan Queue yang utama adalah untuk simulasi fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data.
Penggunaan Queue dapat dicontohkan seperti dibawah ini :
1.Simulasi antrian di dunia nyata, antara lain :
  • Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop.
  • Antrian mobil di depan gerbang jalan tol.
  • Antrian kendaraan di jalanan umum.
2. System produksi
  • Barisan bahan atau komponen yang akan diproses suatu mesin.
  • Barisan bahan atau komponen yang akan diproses suatu manusia



Contoh Program Sederhana Menggunakan Bahasa C++

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{
  int cek=0, data[8], x, hapus;
  char pil;
  do {
      clrscr();
      cout<<”    Ujian Praktikum Struktur Data Queue”<<endl;
      cout<<”       ISI NAMA ANDA”<<endl;
      cout<<”      ISI NAMA KAMPUS ANDA”<<endl;
      cout<<endl;
      printf(“d. Masukan Data Antrian\n”);
      printf(“e. Hapus Data Antrian\n”);
      printf(“n. Lihat Data Antrian\n”);
      printf(“y. Exit Program\n”);
      cout<<endl;
      printf(“Ketikan Huruf Dari Salah Satu Pilihan Diatas…  “);
      pil=getche();
      cout<<endl;

  if(pil!=’d’ && pil !=’e’ && pil !=’n’ && pil!=’y’ )
      printf(“\n\nSalah Ketik, Ulangi Lagi…\n”);
      else
      {
    if(pil==’d')   //PUSH
    {
      if(cek==8)
        printf(“\nAntrian Penuh\n”);
        else
        {
          printf(“\nMasukkan angka–>”);scanf(“%i”,&x);
          data[cek]=x;
          cek++;
        }}
        else
        {
          if(pil==’e')        //POP
          {
        if(cek==0)
          printf(“\nMaaf Tidak Antrian Untuk Dihapus \n\n”);
          else
          {
            hapus=data[0];
            for(int v=0;v<cek;v++)
            data[v]=data[v+1];
            data[cek-1]=NULL;
            cek–;
            cout<<endl;
            printf(“Yakin Anda Ingin Data Ini DiHapus ???  “);
            cout<<endl;
            printf(“\nData dgn nilai=%i akan terhapus. [Tekan Enter]“,hapus);
          }
          getch();
          }
        else
        {
          if(pil==’n')   //Mengecek Data
          {
            if(cek==0)
            printf(“\nMaaf Tidak Ada Antrian Untuk Ditampilkan.\n\n”);

            else
            {
              printf(“\n”);
              for(int z=0;z<cek;z++)
              {
            printf(” { “);
            printf(“%i”,data[z]);
            printf(” } “);
              }

            }
            getch();
            }
          }
        }
          }

    }while(pil!=’y');
    cout<<endl;
    cout<<endl;
         printf(“Yakin anda ingin keluar…??? {{{Tekan Enter Cak}}} “);
      pil=getche();
}m



Contoh Program Sederhana Menggunakan Bahasa Java

class LingkaranAntrian{
    private jenis[] data= (jenis[])new Object[10];
    private int ekor=0;
    private int kepala=0;
    private int jumlah=0;
    private jenis temp;
    public void enqueue(jenis isi){
        data[ekor]=isi;
        jumlah++;
        if(ekor==data.length){
            ekor=0;
        }else{
            ekor++;
        }
    }
    public jenis dequeue(){
        temp=data[kepala];
        jumlah--;
        if(kepala==data.length-1){
            kepala=0;
        }else{
            kepala++;
        }
        return temp;
    }
   
    public jenis peek(){
        return data[kepala];
    }
    public boolean isEmpty(){
        return(jumlah==0);
    }
    public boolean isFull(){
        return(jumlah==data.length);
    }
    public void clear(){
        kepala=0;
        ekor=0;
        jumlah=0;
    }
}




Sorting

Sorting bisa didefinisikan sebagai suatu pengurutan data yang sebelumnya disusun secara acak, sehingga menjadi tersusun secara teratur menurut aturan tertentu. sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah                                                                                 

Pada umumnya metode yang digunakan untuk sorting adalah :

1. Buble\Exchange sort
2. Selection sort
3. Shell Sort
4. Quick sort

Bubble/Exchange sort

Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergera/berpindah ke posisi yang tepat , seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. jika elemen sekarang  lebih besar dari elemen berikutnya maka elemen tersebut ditukar (untuk pengurutan ascending) jika elemen sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen  tersebut ditukar (untuk pengurutan descending). algoritma ini seolanh olah menggeser satu per satu elemen dari kenan ke kiri atau kiri ke kanan. tergantung jenis pengurutannya. Ketika suatu proses telah selesai, maka bubble sort akan mengalami proses, demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan,serta tercapai pengurutan yang telah diinginkan

Contoh pengurutan data yang dilakukan dengan metode bubble sort sebagai berikut :

Proses 1 :
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8
Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di depannya,jika data didepannya lebih besar maka akan di tukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8

pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling kecil.

Proses 3 :
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15

Proses 4 :
2 3 8 22 10 15
2 3 8 22 15 10
2 3 8 15 22 10

Proses 5 :
2 3 8 15 22 10
2 3 8 15 10 22

Pengurutan berhenti.

Contoh Program :

#include
#include
#include
bubble_acak()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
srand(time(NULL));
for (i=0; i
arr[i] = rand() %1000;
//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
getch();
}
bubble_manual()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
for (i=0; i
{
cout<<"masukkan angka ke-"<
cin>>arr[i];
}
//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
//mission complete
getch();
}
main ()
{
int pilih;
char ulang;
do
{
clrscr ();
cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<
cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<
cout<<"masukkan pilihan : "; cin>>pilih;
switch (pilih)
{
case 1:
bubble_acak();
break;
case 2:
bubble_manual();
break;
default:
clrscr();
cout<<"\"maaf\""<
cout<<"\"pilihan yang dimasukkan salah\"";
break;
}
cout< "; cin>>ulang;
}

Dalam Procedure Pascal :
Procedure Bubble(Var Temp : Data; JmlData : Integer);
Var I,J : Integer;
Begin
     For I:=2 To JmlData Do
            For J:=JmlData DownTo I Do
                     If Temp[J] < Temp[J-1] Then           {Untuk Descending
>}
                      SWAP(Temp[J], Temp[J-1]);
End;


Dalam Procedure SWAP :
Var Temp : Char;
 Begin
           Temp := A;
           A := B;
           B := Temp;
End;



Selection Sort

Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil. kemudian dilakukan penukaran dengan elemen ke-I. Secara singkat metode ini bisa dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil dari data pertama sampai terakhir. Kemudian data tersebut kita tukar dari data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding dengan data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua. Demikian seterusnya sampai seluruh data terurut.


Contoh dari proses sorting dengan menggunakan metode Selection sort : 

Dalam Procedure Pascal :
Procedure Selection(Var Temp : Data; JmlData : Integer); 
Var I,J, Lok : Integer; 
      Begin 
            For I:=1 To JmlData-1 Do 
                Begin 
                     Lok:=I; 
                     For J:=I+1 To JmlData Do 
                     If Temp[Lok] > Temp[J] Then Lok:=J; 
                     SWAP(Temp[I], Temp[Lok]); 
                 End; 
      End; 

Shell Sort

Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen  yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudain elemen kedua kita bandingkan dengan eleen lain dengan jarak yang sama seperti jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.
Contoh dari proses Sorting dengan menggunakan metode Shell Sort :
Dalam Procedure Pascal :
Procedure Shell(Var Temp : Data; JmlData : Integer); 
Var I,J, Jarak : Integer; 
        Begin 
             Jarak := JmlData Div 2; 
              While Jarak > 0 Do 
                    Begin 
                        For I:=1 To JmlData-Jarak Do 
                             Begin 
                                 J := I + Jarak; 
                                 If Temp[I] > Temp[J] Then  
                                 SWAP(Temp[I], Temp[Lok]); 
                             End; 
                             Jarak := Jarak Div 2; 
                    End; 
          End;

Quick Sort

Metode ini dikembangkan oleh CAR Hoare. Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang membunyai N elemen. Kita pilih sembarang elemen dari data tersebut, biasanya elemen pertama, misalnya X. Kemudain semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa shingga elemen ke 1 sampai ke J-1 mempuyai nilai lebih besar dari X. Sampai berikutnya diulang untuk  setiap sub data.
Contoh dari proses Soring dengan menggunakan metode Quick Sort

Dalam Procedure Pascal :
Procedure Quick(Var Temp : Data; Awal, Akhir : Integer); 
      Var I,J : Integer; 
       Procedure ATUR; 
                   Begin 
                   I:=Awal +1; 
                   J:= Akhir; 
                    While Temp[I] < Temp[Awal] Do Inc(I);
                   While Temp[J] > Temp[Awal] Do Dec(J); 
                   While I < J Do 
                         Begin 
                                SWAP(Temp[I], Temp[J]); 
                                While Temp[I] < Temp[Awal] Do Inc(I); 
                                While Temp[J] > Temp[Awal] Do Dec(J); 
                         End; 
                   SWAP(Temp[Awal], Temp[J]); 
End; 
                  Begin 
                      If Awal < Akhir Then 
                             Begin 
                                  ATUR; 
                                  Quick(Temp, Awal, J-1); 
                                  Quick(Temp,J+1,Akhir); 
                             End; 
End;
 
 
 
 
 
 
 
 
Sumber :
http://kael9001.blogspot.com/2013/02/bubble-sort.html
http://khaerulwaris.blogspot.com/2013/10/contoh-source-code-program-stack-dan.html
http://strukturdata18.blogspot.com/2013/05/makalah-struktur-dar.html
 

 








6 komentar:

Trisna mengatakan...

Luar biasah

Unknown mengatakan...

terimakasih pembelajaran nya
My blog
My Campus

Unknown mengatakan...

sangat bermanfaat
My blog
My Campus

Unknown mengatakan...

kalo gak bisa di copy ngapa di share AJG!!!!!

GusjiRND mengatakan...

yg bikin goblok, ngshare ilmu tapi gak bisa di copas

Salimprograming mengatakan...

ijin kan copas cuk

Posting Komentar