Kamis, 04 Juni 2015

Sorting (selection sort dan insertion sort)

Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu.
Pada umumnya ada 2 macam pengurutan :
                1. Pengurutan secara ascending ( urutan naik)
                2. Pengurutan secara descending (urutan turun)
Contoh pengurutan data :
·         Data Acak : 5 6 8 1 3 25 10
·         Ascending : 1 3 5 6 8 10 25
·         Descending : 25 10 8 6 5 3 1
Selection Sort
  1. Merupakan kombinasi antara sorting dan searching
  2. 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
  3. Selama proses pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Untuk ilustrasi bisa di lihat di gambar di bawah
Data : 5, 1, 12, -5, 16, 2, 12, 14
Image



Contoh coding  selection sort
#include <iostream.h>
#include <stdio>
#include <conio.h>


int selectionsort (int array[], const int size)
 {
    int i, j, kecil, temp;
    for (i=0; i<size; i++)
    {
        kecil=i;
        for (j=i; j<size; j++)
        {
             if (array[kecil]>array[j])
             {
                  kecil = j;
             }
        }
        temp = array [i];
    array[i] = array[kecil];
    array[kecil] = temp;

    }
 }


int main()
{
    int NumList[8] = {5, 34, 32, 25, 75, 42, 22, 2};
    int temp;
    cout<<"Data sebelum diurutkan: \n";
    for (int d=0; d<8; d++)
    {
         cout<<setw(3)<<NumList[d];
    }

    cout<<"\n\n";
    selectionsort(NumList,8);

    cout<<"Data setelah diurutkan:\n";
    for (int iii=0; iii<8; iii++)
    cout<<setw(3)<<NumList[iii]<<endl<<endl;
    getch();
}






Insertion Sort
·         Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan ke tempat yang seharusnya
·         Pengurutan dimulai dari data ke 2 sampai dengan data terakhir , jika ditemukan data yang lebih kecil, maka akan di tempatkan (diinsert) di posisiyang seharusnya.
·         Pada penyisipan elemen maka elemen – elemen lain akan bergeser ke belakang
#include <iostream.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 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;
    }
}
void main()
{
    cout<<"INSERTION SORT PROGRAM"<<endl;
    cout<<"Jumlah Data : ";    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<"Data ke "<<i<<"   : ";    cin>>data[i];
        data2[i]=data[i];
    }
    insertion_sort();
    cout<<"Data Setelah di Sort : ";
    for(i=1; i<=n; i++)
    {
        cout<<" "<<data[i];
    }
}

Source : Presentasi Matakuliah Struktur Data Stikom Bali “Sorting”


0 komentar:

Posting Komentar