Jumat, 05 Juni 2015

SORTING (Pengurutan)



Pengertian Sorting

Sorting adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Pada umumnya terdapat 2 cara pengurutan data yaitu :

·            -  Ascending : Pengurutan dilakukan mulai dari nilai terkecil menuju nilai terbesar

·            -  Descending: Pengurutan dilakukan mulai dari nilai terbesar menuju nilai terkecil
    
     Ada beberapa cara dalam melakukan sorting, namun kali ini saya akan mencoba membahas sorting dengan metode selection sort dan insertion sort. 
  

  Selection sort

                Selection sort adalah kombinasi antara sorting dan searching, Untuk setiap proses akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.







Prosedur Selection Sort

   void selection_sort()

{

for(int i=0;i<n-1;i++)

{

pos = i;

for(int j=i+1;j<n;j++)

{

if(data[j] < data[pos]) pos = j; //ascending

}

if(pos != i) tukar(pos,i);

}
}

Insertion Sort


Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil

dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data

yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang.






Prosedur Insertion Sort


void insertion_sort()

{

int temp;

for(int i=1;i<n;i++)

{

temp = data[i];

j = i -1;

while(data[j]>temp && j>=0)

{

data[j+1] = data[j];

j--;

}

data[j+1] = temp;

}
}

Program Lengkap :


#include <stdio.h>

#include <conio.h>

int data[10],data2[10];

int n;

void tukar(int a,int b)

{

int t;

t = data[b];

data[b] = data[a];

data[a] = t;

}

void selection_sort()

{

int pos,i,j;

for(i=0;i<n-1;i++)

{

pos = i;

for(j = i+1;j<n;j++)

{

if(data[j] < data[pos]) pos = j;

}

if(pos != i) tukar(pos,i);

}

printf("selection sort selesai!\n");

}



void insertion_sort()

{

int temp,i,j;

for(i=1;i<n;i++)

{

temp = data[i];

j = i -1;

while(data[j]>temp && j>=0)

{

data[j+1] = data[j];

j--;

}

data[j+1] = temp;

}

printf("insertion sort selesai!\n");

}



void Input()

{

printf("Masukkan jumlah data = ");scanf("%d",&n);

for(int i=0;i<n;i++)

{

printf("Masukkan data ke-%d =

",(i+1));scanf("%d",&data[i]);

data2[i] = data[i];

}

}



}

void main()

{

clrscr();

int pil;

do

{

clrscr();

printf("1. Input Data\n");

printf("1. Selection Sort\n");

printf("2. Insertion Sort\n");

printf("4.Exit\n");

printf("Pilihan = ");scanf("%d",&pil);

switch(pil)

{

case 1:Input();break;

case 2:bubble_sort();break;

case 3:exchange_sort();break;

case 4:selection_sort();break;

case 5:Tampil();break;

}

getch();

}while(pil!=4);




Tidak ada komentar:

Posting Komentar