Sabtu, 06 Juni 2015

APA ITU SORTING...?



SORTING

Definisi Sorting

Pengurutan (sorting) adalah proses yang mengatur sekumpulan objek/data sehingga nilainya tersusun, baik itu dari kecil ke besar (ascending) atau dari besar ke kecil (descending). Disini saya akan membahas tentang selection sort dan insertion sort.

1.    Selection sort

Definisi Selection Sort

Metode selection sort merupakan metode membandingkan elemen yang pertama dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar.

Proses pengurutan menggunakan metode selection sort secara terurut naik adalah sebagai berikut: 
  1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. Kemudian ditukar posisinya dengan data pertama. 
  2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua. 
  3. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya.




2.      Insertion Sort

Definisi Insertion Sort

Metode Insertion Sort adalah metode pengurutan yang mengambil sebuah data sisip pada data yang diurutkan dan menggeser data yang lebih besar dari data sisip agar data sisip dapat ditempatkan pada tempat yang benar.

Proses yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort adalah dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai. Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Berikut ilustrasinya:




Contoh codding dari Selection Sort dan Insertion Sort secara ascending yang mana user ditentunkan menginputkan maksimal 15 data:




#include<iostream.h>
#include<conio.h>
int data[15];
int n;

void tukar(int a, int b)
{
    int t;
     t=data[b];
    data[b]=data[a];
    data[a]=t;
}

void selection_sort()
{
    int temp,i,j;
    for(i=0;i<n-1;i++)
    {
        temp=i;
        for(j=i+1;j<n;j++)
        {
            if(data[j]<data[temp])temp=j;
        }
        if(temp!=i)
        {
            tukar(temp,i);
        }
    }
    cout<<"Selection sort selesai!!"<<endl;
    cout<<"Data : "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}

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;
    }
    cout<<"Insertion sort selesai!!!"<<endl;
    cout<<"Data : "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}


void input()
{
    cout<<"Masukkan jumlah data = ";
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"Masukkan data ke - "<<(i+1)<<" = " ;
        cin>>data[i];
    }
}


void main()
{
    int pil;
    clrscr();
    do
    {
        clrscr();
        cout<<"1. Input Data"<<endl;
        cout<<"2. Selection Sort"<<endl;
        cout<<"3. Insertion Sort"<<endl;
        cout<<"4. Exit"<<endl;
        cout<<"Masukkan Pilihan anda = ";
        cin>>pil;

        switch(pil)
        {
            case 1: input();break;
            case 2: selection_sort();break;
            case 3: insertion_sort();break;
        }
        getch();
    }
    while(pil!=4);
}

1 komentar: