Thursday, January 14, 2016

Array

Sebelum nya saya akan sedikit membahas konsep dasar dari array.Program yang kompleks memerlukan banyak variabel sebagai inputannya. Kita bisa saja mendeklarasikan variabel–variable tersebut satu persatu sesuai dengan jumlah yang kita butuhkan.

Misalkan kita memiliki tiga data yang berbeda dan kita simpan dalam variabel yang berbeda.
int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;
etc..............

Bagaimana jika terdapat banyak data yang berbeda yang memiliki tujuan yang sama, dan bagaimana cara menyimpannya.Sebuah variabel array adalah sejumlah variabel berbeda dengan nama yang sama tetapi memiliki nomor indeks yang unik untuk membedakan setiap variabel tersebut. Gambaran tentang konsep array seperti strukur data berikut ini:


Penjelasan:

-Indeks adalah sebuah angka yang menyatakan urutan sebuah elemen pada suatu variabel array

- Nomor indeks variabel array selalu dimulai dari 0 (nol), sehingga nomor indeks bagi elemen terakhir sebesar (N-1), dimana N adalah jumlah total elemen.

- Untuk mengakses dapat dilakkan setiap elemen dalam variabel array dengan mengacu pada nomor indeksnya.

Terdapat 3 langkah untuk membuat array:
*Mendeklarasikan variabel array
Contoh :
int [ ] angka;
“ Variabel angka kita deklarasikan sebagai variabel array dimana setiap elemennya akan menyimpan data bertipe int ”.
*Memcreate array beserta ukurannya.
Contoh :
angka = new int[5];
int[] angka = new int[5];
“Berarti kita memesan 5 elemen untuk variabel angka dan array adalah sebuah object, maka
create array dengan operator new.”
*Memberikan sebuah nilai pada setiap element array.
Contoh :
int[ ] angka = {5, 3, 23, 99, 2};
int scores = new int[3];
scores[0] = 75;
scores[1] = 80;
scores[2] = 100;

Contoh Program Array 1 Dimensi

import java.io.*;
public class ContohArray1{
public static void main(String[] args)
{
try{
int[] angka = new int[5];
System.out.println("Masukkan 5 Data");
System.out.println("===============");
BufferedReader in = new BufferedReader(new InputStreamReader (System.in));
for (int i=0;i<angka.length;i++)
{
System.out.print("Masukkan Data Ke-"+(i+1)+" : ");
angka [i] = Integer.parseInt(in.readLine());
}
System.out.println("\nData Yang Ada Di Array :");
System.out.println("===============");
for (int i=0;i<angka.length;i++)
{
System.out.println("Data Ke-"+(i+1)+" : "+angka[i]);
}
}
catch(Exception e) {
System.out.println("Error");
}
}
}

Penjelasan :

* Pada baris source int[ ] angka = new int[5] ,kita mendeklarasikan array dengan nama angka yang mempunyai 5 elemen.

* Fungsi length, digunakan untuk mengetahui banyaknya elemen dari suatu array.

* angka[i] = Integer.parseInt(in.readLine()), instruksi untuk memasukkan angka yang kita masukkan ke dalam elemen array.

Hasil

Array 2 Dimensi

Bentuk umum pendeklarasian variabel array dua dimensi di Java adalah:

tipeData[ ][ ] nama_variabel[=new tipeData[jumlah_baris] [jumlah_kolom]];

N adalah nilai yang menyatakan jumlah baris dari array, sedangkan M menyatakan jumlah kolom dari array.

Contoh Program Array 2 Dimensi

public class ArrayDuaDimensi {
public static void main(String [] args)

{
int TwoDarray[][]=new int[0][0];
int k=0;
for (int i=0; i<5; i++)
{
for(int j=0; j<4; j++)
{
System.out.print(+i+","+j);
}
System.out.print("");
}
}
}
Hasil


Apa itu Linked List?

Linked List adalah bagian dari Struktur Data
Linked list atau dikenal juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari urutan record data dimana setiap record memliki field yang menyimoan alamat/ referensi dari record selanjutnya (dalam urutan) elemen data yang dihubungkan dengan link pada linked list disebut Node. Biasanya didalam suatu lnked list, terdapat istilah head and tail.
•             Head adalah elemen yang berada pada posisi pertama dalam suatu linked list
•             Tail adalah element yang berada pada posisis terakhir dalam suatu linked list
Ada Beberapa macam Linked List, yaitu:
1.            Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu varuabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya.Biasanya field pada tail menunjuk ke NULL
Contoh:

Contoh Codingannya :
 struct Mahasiswa{
  char nama[25];
  int usia;
  struct Mahasiswa *next;
}*head,*tail;

2.            Double Linked List
Double Linked List Merupakan suatau linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke  NULL Contoh:


Contoh Codingannya:
Struct Mahasiswa{
 char nama[25];
 int usia;
 struct Mahasiswa *next,*prev;
}*head,*tail;

3.            Circular Linked List
Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head(node pertama).Jadi tidak ada pointer yang menunjuk NULL ada 2 jenis Circular Linked List Yaitu:
•             Circular Single Linked List

Contoh:


•             Circular Double Linked List

Contoh:



4.            Multiple Linked List
Multi Linked List Merupakan Suatu Linked List yang Memiliki Lebih dari 2 buat variabel pointer

Contoh:




Pengertian Struktur Data

PENGERTIAN STRUKTUR DATA

Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai 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

Secara garis besar type data dapat dikategorikan menjadi :

  1. 1. Type data sederhana

a. Type data sederhana tunggal, misalnya
Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya
String

2. Struktur Data, meliputi

a. Struktur data sederhana, misalnya array dan record
b. Struktur data majemuk, yang terdiri dari
Linier : Stack, Queue, serta List dan Multilist
Non Linier : Pohon Biner dan Graph

Pemakaian struktur data yang tepat di dalam 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 )



RECORD (REKAMAN)

Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram.

Rekaman disebut juga tipe terstruktur.
Contoh :

1. type Titik : record <x : real, y : real>
jika P dideklarasikan sebagai Titik maka
mengacu field pada P adalah P.x dan P.y.

2. Didefinisikan tipe terstruktur yang mewakili Jam yang terdiri
atas jam (hh), menit (mm) dan detik (ss), maka cara menulis
type Jam adalah :
type JAM : record <hh : integer, {0…23}
mm : integer, {0…59}
ss : integer {0…59}>
Jika J adalah peubah (variabel) bertipe Jam
maka cara mengacu tiap field adalah J.hh, J.mm dan J.ss









Terjemahan dalam bahasa C :
1. type Titik : record <x : real, y : real>
diterjemahkan menjadi :
typedef struct { float x;
float y;
} Titik;
2. type JAM : record
<hh : integer, {0…23}
mm : integer, {0…59}
ss : integer {0…59}
> 
Diterjemahkan menjadi :
typedef struct
{ int hh; /*0…23*/
int mm; /*0…59*/
int ss; /*0…59*/
} Jam;



Pengertian Tree

          PENGERTIAN TREE
Kumpulan node yang saling terhubung satu sama lain dalam suatu  kesatuan yang
membentuk layakya struktur sebuah pohon. Struktur pohon adalah suatu  cara
merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip
sebuah pohon, walaupun pohon tersebut  hanya tampak sebagai kumpulan node-node  dari atas ke bawah. Suatu struktur data yang tidak linier yang
menggambarkan  hubungan yang hirarkis (one-to-many) dan tidak linier antara
elemen-elemennya.
Deklarasi Pohon
Jika kita memperhatikan setiap simpul dalam pohon biner, kita bisa menyusun  struktur data yang tepat dari simpul-simpul tersebut. Kita dapat melihat bahwa dalam  setiap simpul selalu berisi dua buah pointer untuk menunjuk ke cabang kiri dan cabang  kanan, dan informasi yang akan disimpan dalamsimpul tersebut. Dengan memperhatikan hal ini, simpul dalam pohon biner disajikan sebagai berikut:

Sesuai dengan gambar 7.1, maka deklarasi list yang sesuai adalah:
typedef char TypeInfo;
typedef struct Simpul *Tree;
struct Simpul {
TypeInfo Info;
tree Kiri, /* cabang kiri */
Kanan; /* cabang kanan */
};
 ISTILAH DALAM TREE


1.            JENIS-JENIS TREE
BINARY TREE
Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua sub
pohon dan kedua subpohon harus terpisah.
Kelebihan struktur Binary Tree :
  • Mudah dalam penyusunan algoritma sorting
  • Searching data relatif cepat
  • Fleksibel dalam penambahan dan penghapusan data


  

1.            KUNJUNGAN PADA POHON BINER
Sebuah pohon biner memiliki operasi  traversal  yaitu suatu kunjungan pada
suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap kita akan
memperoleh urutan informasi secara linier yang tersinpan di dalam pohon biner.
Terdapat tiga jenis kunjungan pada pohon biner, yaitu :
1.            PREORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
  • Cetak isi simpul yang dikunjungi.
  • Kunjungi cabang kiri.
  • Kunjungi cabang kanan.

Prosedur untuk melakukan traversal secara PREORDER adalah sebagai berikut:

1.            INORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
–  Kunjungi cabang kiri.
–  Cetak isi simpul yang dikunjungi.
–  Kunjungi cabang kanan.
Prosedur untuk melakukan traversal secara INORDER adalah sebagai berikut:

 
2.            POSTORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
  • Kunjungi cabang kiri.
  • Kunjungi cabang kanan.
  • Cetak isi simpul yang dikunjungi

BERIKUT MERUPAKAN CONTOH PROGRAMNYA
#include<stdio.h>//header file
#include<conio.h>
/* Deklarasi struct */
typedef struct Node{
      int data;    //data pada tree
      Node *kiri;  //penunjuk node anak kiri
      Node *kanan; //penunjuk node anak kanan
};
/* Fungsi untuk memasukkan data ke dalam tree */
void tambah(Node **root, int databaru){
      if((*root) == NULL){       //jika pohon/subpohon masih kosong
            Node *baru;//node “baru” dibentuk…
            baru = new Node;//berdasarkan struct “Node”
            baru->data = databaru; //data node baru diisi oleh variabel databaru
            baru->kiri = NULL;//penunjuk kiri node baru masih kosong
            baru->kanan = NULL;//penunjuk kanan node baru masih kosong
            (*root) = baru; //node pohon (root) diletakkan pada node baru
            (*root)->kiri = NULL;//penunjuk kiri node root masih kosong
            (*root)->kanan = NULL; //penunjuk kanan node root masih kosong
            printf(“Data bertambah!”);
      }
      else if(databaru < (*root)->data)//jika databaru kurang dari data node root…
            tambah(&(*root)->kiri, databaru);//tambahkan databaru pada subpohon kiri
      else if(databaru > (*root)->data)//jika databaru lebih dari data node root…
            tambah(&(*root)->kanan, databaru); //tambahkan databaru pada subpohon kanan
      else if(databaru == (*root)->data)//jika databaru sama dengan data node root
            printf(“Data sudah ada!”);//databaru tidak dapat ditambahkan pada tree
}
/* Fungsi untuk menampilkan data secara pre-order
   (data ditampilkan dari node induk, node anak kiri, lalu node anak kanan)
*/
void preOrder(Node *root){
      if(root != NULL){//jika pohon/subpohon tidak kosong
            printf(“%d “, root->data);//menampilkan data node yang dikunjungi
      preOrder(root->kiri);//mengunjungi node anak kiri
      preOrder(root->kanan); //mengunjungi node anak kanan
      }
}
/* Fungsi untuk menampilkan data secara in-order
   (data ditampilkan dari node anak kiri, node induk, lalu node anak kanan)
*/
void inOrder(Node *root){
      if(root != NULL){//jika pohon/subpohon tidak kosong…
      inOrder(root->kiri);//mengunjungi node anak kiri
      printf(“%d “, root->data);//menampilkan data node yang dikunjungi
      inOrder(root->kanan);//mengunjungi node anak kanan
      }
}
             
/* Fungsi untuk menampilkan data secara post-order
   (data ditampilkan dari node anak kiri, node anak kanan, lalu node induk)
*/
void postOrder(Node *root){
     if(root != NULL){//jika pohon/subpohon tidak kosong
     postOrder(root->kiri); //mengunjungi node anak kiri
     postOrder(root->kanan);//mengunjungi node anak kanan
     printf(“%d “, root->data); //menampilkan data node yang dikunjungi
     }
}
main(){
     int pil, c;
     Node *pohon, *t;
     pohon = NULL;
     do{
           int data;
           printf(“MENU\n”);
           printf(“1. Tambah\n”);
           printf(“2. Lihat Pre-Order\n”);
           printf(“3. Lihat In-Order\n”);
           printf(“4. Lihat Post-Order\n”);
           printf(“5. Exit\n”);
           printf(“Pilihan : “); scanf(“%d”, &pil);
           switch(pil){
           case 1 :
                printf(“Data baru : “);
                scanf(“%d”, &data);
                tambah(&pohon, data);
                break;
           case 2 :
                if(pohon != NULL)
                     preOrder(pohon);
                else
                     printf(“Masih kosong!”);
                break;
           case 3 :
                if(pohon != NULL)
                     inOrder(pohon);
                else
                      printf(“Masih kosong!”);
                break;
           case 4 :
                if(pohon != NULL)
                     postOrder(pohon);
                else
                     printf(“Masih kosong!”);
                break;
           }
           getch();
           printf(“\n”);
     }
     while(pil != 5);
}
HASIL



Queue

Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Pada Stack atau tumpukan menggunakan prinsip“Masuk terakhir keluar pertama”atau LIFO (Last In First Out), Maka pada Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll.
Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear).

Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian

Operasi pada Queue atau antrian
1. tambah(menambah item pada belakang antrian)
2. hapus (menghapus elemen depan dari antrian)
3. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak)

Operasi-operasi Queue :
1. Create()
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail  = -1


2. IsEmpty()
Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.


3. IsFull
Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh


4. Enqueue
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang
Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu


5. Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1
Penggeseran dilakukan dengan menggunakan looping.


6. Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca


7. Tampil()
Untuk menampilkan nilai-nilai elemen Antrian
Menggunakan looping dari head s/d tail



Searching

1. Pengertian Searching 
Pencarian (Searching) merupakan proses yang fundamental dalam pemrograman, guna menemukan data (nilai) tertentu di dalam sekumpulan data yang bertipe sama. Fungsi pencarian itu sendiri adalah untuk memvalidasi (mencocokkan) data. 

2. Metode pencarian dibagi menjadi 2, yaitu: 
1. Metode Pencarian Beruntun 
Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir. 
2. Metode Pencarian Bagi Dua (Binary Search) 
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini. 
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai data yang akan dicari. Jika bernilai sama, maka langsung data yang dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut. 
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0; 
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen. 


Contoh implementasi searching 

#include
 

void main() 
{ 
clrscr(); 

int bil[5]; 
int jml_bil,nilai_max; 
int i; 

/* input data */ 
cout<<"masukkan jumlah bilangan kurang dari 5 : ";cin>>jml_bil; 
for(i=0;i
{ 
cout<<"bilangan ke"<<i+1<<":";cin>>bil[i]; 
} 

/* menentukan nilai max */ 
nilai_max=bil[0]; 
for(i=0;i
{ 
if (bil[i]>nilai_max) 
{ 
nilai_max=bil[i]; 
} 
} 

/* mencetak nilai max */ 
cout<<"nilai maksimum : "<<nilai_max<
cout<
 
getch(); 

} 

Algoritma dari 

Proses yang terjadi pada pencarian dengan metode ini adalah sebagai berikut : 

1. Membaca Array data 
2. Apabila Array belum terurut maka array diurutkan terlebih dahulu. 
3. Menentukan data yang akan dicari 
4. Menentukan elemen tengah dari array 
5. Jika nilai elemen tengah sama dengan data yang dicari, maka pencarian berhenti. 
6. Jika elemen tengah tidak sama dengan data yang dicari maka : 
1. Jika nilai elemen tengah > data yang dicari maka pencarian dilakukan pada setengah array pertama. 
2. Jika nilai elemen tengah lebih kecil dari pada data yang dicari maka pencarian dilakukan pada setengah array berikutnya. 

</nilai_max<</i+1<<":";cin>

Sorting

Sorting / pengurutan biasanya dilakukan untuk tujuan mempermudah pencarian. Pengurutan data baik dari segi ascending (dari nilai terkecil ke terbesar) atau descending (dari nilai terbesar ke terkeci). Ketika akan melakukan sortir di komputer, maka hal-hal yang akan mempertimbangkan, meliputi :
1. Perlu tidaknya data disortir
2. Besarnya atau banyaknya data yang akan disortir
3. Kemampuan atau kapasitas computer atau media penyimpanan data
4. Metode sortir
Teknik sortir sangat erat kaitannya dengan proses perbandingan dan penukaran tempat antar elemen data. Waktu terbaik akan diperoleh ketika susunan elemen datanya sudah sama dengan susunan yang diinginkan melalui sortirnya. Waktu terburuk akan didapatkan ketika susunan elemen – elemen datanya terbalik dari susunan yang dikehendaki sortirnya. Waktu rata-rata diperoleh dengan memperhitungkan berbagai susunan bentuk elemen-elemen datanya.


1. Bubble Sort              

Bubble Sort atau metode gelembung adalah metode pengurutan dengan cara melakukan penukaran data dengan tempat disebelahnya jika data sebelum lebih besar dari pada data sesudahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan, atau telah terurut dengan benar. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci atau data akan dengan lambat menggelembung atau membandingan data ke posisinya yang tepat.

Metode ini mudah dipahami dan diprogram, tetapi bila dibandingkan dengan metode lain yang kita pelajari, metode ini merupakan metode yang paling tidak efisien karena memiliki banyak pertukara sehingga memerlukan pengalokasian memori yang besar untuk menjalankan metode ini.

Kelebihan Bubble sort :
- Metode Bubble sort adalah metode yang paling simpel
- Metode Bubble sort mudah dimengerti algoritmanya

Contoh Program Bubble Sort :
#include<iostream.h>
#include<conio.h>
void Selsort(int X[], int SIZE)
{
int pos,small,temp;
for (int i=0; i<SIZE-1; i++) {
small=X[i];
for (int j=i+1; j<SIZE; j++)
{
if (X[j]<small)
{small=X[j];
    pos=j;}
    }
    temp=X[i];
    X[i]=X[pos];
    X[pos]=temp;
    } }
    void main(void)
    { clrscr();
    int A[10];
    int size;
    cout<<"\n Enter array size :";
    cin>>size;
    cout<<"\n Enter array elements :";
    for (int i=0; i<size; i++)
    {
    cin>>A[i];
    }
    Selsort(A,size);
    cout<<"\n The sorted array is as shown below :";
    for (int l=0; l<size; l++)
    {cout<<A[l];}
    getch();
    }
Contoh Gambar Cara Kerja Bubble Sort :


2. Selection Sort

Selection Sort adalah metode yang digunakan dengan cara memilih data yang akan diurutkan menjadi dua bagian, yang belum diurutkan, dan meja yang telah diurutkan. Elemen pertama yang diambil dari bagian array yang belum diurutkan dan kemudian diletakan pada posisinya sesuai dengan bagian lain array yang telah di urutkan. Tahapan ini dilakukan secara berulang-ulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

Contoh Program Selection Sort :
#include <conio.h>
#include <stdio.h>
void tampilkan_larik(int data[], int n)
{
int i;
for (i=0;i<n;i++)
cout<<data[i]<<"  ";
cout<<endl<<endl;
}


void selection_sort(int data[], int n)
{
int posmin, posawal, j, tmp;

for(posawal=0;posawal<n-1;posawal++)
    {
   posmin=posawal;
   for (j=posawal+1;j<n;j++)
       if(data[posmin]>data[j])
          posmin=j;

         //tukarkan
           tmp=data[posawal];
         data[posawal]=data[posmin];
         data[posmin]=tmp;

      cout<<"\n Hasil ketika Posawal = "<<posawal<<" : ";
      tampilkan_larik(data,n);

   }
}

int main ()
{
int data[50], i,n;
cout<<"\n@ SIMULASI SELECTION SORT @\n\n\n";
cout<<"=========================================\n";
cout<<"      masukkan banyak data : ";
cin>>n;


clrscr();
for (int a=0;a<n;a++)
    {
   cout<<"\n   masukkan data ke "<<a<<" : ";
   cin>>data[a];
   }
selection_sort(data,n);

//hasil pengurutan

cout<<"\n\n  hasil pengurutan : \n\n";
cout<<"  "; tampilkan_larik(data,n);
cout<<"\n SORTING SELESAI...................";
getch();
clrscr();
cout<<"-----------------------";
cout<<"by: hamba Allah, 2014";
cout<<"-----------------------";
getch();
return 0;
}
Contoh Gambar Cara Kerja Selection Sort :


3. Insertion Sort

Insertion Sort adalah Metode Literasi (pengulangan) yang menginsert atau menyisipkan setiap elemen ketempat yang sesuai(setelah dibandingkan dengan elemen kiri dan kanannya) atau kita bisa mengumpamakan metode ini seperti bermain kartu, yaitu satu demi satu akan menginsert ketempat yang sesuai.

Contoh Program Insertion Sort :
#include <iostream.h>
#include <conio.h>

#define ELEMENTS 6
void insertion_sort(int x[], int length){
    int key, i;
   for(int j=0; j<length;j++){
            key=x[j];
            i=j-1;
            while(x[i]>key&&i>=0){
                x[i+1]=x[i];
                i--;
            }
            x[i+1]=key;
   }

}

int main(){
    int A[ELEMENTS]={9,2,7,5,4,3};
   int x;
   cout<<"array yang belum di sort:";
   for(x=0;x<ELEMENTS;x++){
           cout<<A[x];
   }
   cout<<endl;
   insertion_sort(A,ELEMENTS);
   cout<<"Array yang sudah di sort:";
   for(x=0;x<ELEMENTS;x++){
           cout<<A[x];
   }
   getch();
   return 0;
}
Contoh Gambar Cara Kerja Insertion Sort :