Pages

Banner 468 x 60px

 

Senin, Januari 07, 2019

Sorting Metode Devide And Conquer

0 komentar


      Pengurutan   (Sorting).   proses   mangatur   sekumpulan   obyek/data menurut urutan atau susunan tertentu.
    Urutan obyek/data tersebut dapat menaik (ascending) atau menurun
(descending).
      Data  yang  diurutkan    dapat  berupa  data  bertipe  dasar  atau  data bertipe struktur
      Data  yang  sudah  terurut  memiliki  keuntungan  yaitu  Mempercepat proses pencarian data.


Metode Pengurutan
Algoritma pengurutan / sorting bermacam-macam dan setiap algoritma ini memiliki kinerja yang berbeda-beda.   Berikut ini macam-macam algoritma pengurutan:


1.  Metode Selection Sort
2.  Metode Buble Sort
3.  Metode Merge Sort
4.  Metode Quick Sort
5.  Metode Insertion


Hal  yg  mempengaruhi  Kecepatan  Algoritma  Sorting  adalah  Jumlah
Operasi Perbandingan & Jumlah Operasi Pemindahan Data


1.  Selection Sort (Metode Seleksi).
Tehnik pengurutan dengan cara pemilihan elemen dengan memilih elemen data terkecil utk kemudian dibandingkan & ditukarkan dengan elemen pada data awal, dst s/d seluruh elemen shg akan menghasilkan pola data yg telah disort.

    Merupakan 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])


ALGORITMA SELECTION SORT.



1.  Pengecekan dimulai data ke-1 sampai dengan data ke-n
2.  Tentukan  bilangan  dengan  Index  terkecil  dari  data  bilangan tersebut
3.  Tukar bilangan dengan Index terkecil tersebut dengan bilangan pertama (I = 1) dari data bilangan tersebut
4.  Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 )
sampai didapatkan urutan yg optimal

Contoh implementasi dalam bahasa C++ adalah sebagai berikut

/*selection Sort*/
#include <iostream>
#include <iomanip>

using namespace std;
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[10];
int N;
cout<<"Masukkan jumlah data = ";
cin>>N;
for(int i=0;i<N;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = ";
cin>>NumList[i];
}

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

cout<<"Data setelah diurutkan:\n";
for (int i=0; i<N; i++) {
cout<<setw(3)<<NumList[i]<<"\n\n";
}
return 0;
}

2.  Metode Bubble Sort (Gelembung)

Teknik yang diinspirasi oleh gelembung sabun yang  berada  dipermukaan  air.  Karena  berat jenis  gelembung  lebih  ringan  dari  pada  air, maka gelembung akan naik keatas. (benda yang berat akan terbenam, benda ringan terapung).Elemen data yang paling kecil diapungkan diangkat keatas  melalui proses pertukaran.

Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya

Algoritma Bubble Sort


1.  Pengecekan mulai dari data ke-1 sampai  data ke-n
2.  Bandingkan data ke-n dengan data sebelumnya (n-1)
3.  Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya     ( sebelumnya  ) satu persatu  (n-1,n-2,n-3,....dst)
4.  Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.




Analogi :
  Larik dengan urut menaik, elemen larik yang berharga paling kecil diapungkan , artinya  diangkat  ke  atas  (atau  ke  ujung  kiri  larik) melalui proses  pertukaran.
  Proses pengapungan ini dilakukan sebanyak N-1 langkah dengan N
adalah ukuran larik.
  Pada  akhir  setiap  langkah  ke-I,  larik  L[1..N]  akan  terdiri  atas dua  bagian  yaitu  bagian  yang  sudah  terurut,  yaitu  L[1..I]  dan bagian  yang  belum   terurut L[I+1..N]. Setelah langkah terakhir, diperoleh larik L[1..N] yang terurut menaik.


Bubble Sort Disebut juga dengan metode Penukaran (Exchange Sort), yaitu metoda yang mendasarkan pada penukaran elemen untuk mencapai keadaan urut yang diinginkan.

Algoritma Metode gelembung :

-     langkah 0 : Baca vector yang akan diurutkan (dalam program utama)
-    langkah 1 : Kerjakan langkah 2 untuk i = 1 sampai N-1
-    langkah 2 : Kerjakan langkah 3 untuk j = 1 sampai N- i
-     langkah 3 : Tes apakah A[j] >  A[j +1] ? Jika ya, tukarkan nilai kedua elemen  ini - langkah 4 : Selesai
Contoh Program Buble Sort
#include <iostream>

using namespace std;

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 Input()
{
cout<<"Masukkan jumlah data = ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = ";
cin>>data[i]; data2[i] = data[i];
}
cout<<endl;
}
void Tampil()
{
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j--){
if(data[j]<data[j-1]) {
tukar(j,j-1);
}
}
Tampil();
}
cout<<endl;
}
main()
{
cout<<"Fungsi Bubble Sort"<<endl; Input();

cout<<"Proses Bubble Sort"<<endl; Tampil();

bubble_sort();
return 0;
}

3. Metode INSERTION SORT (Sisip)

 Algoritma    ini    dianalogikan    seperti 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

Analogi :

      Mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
      Seluruh kartu diletakkan pada meja, kita sebut meja pertama, disusun dari kiri ke kanan dan atas ke bawah.
    Kemudian  pada meja kedua tempat meletakkan kartu yang diurutkan.
      Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua.
      Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan.
      Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan berurutan pada meja kedua.

Contoh :
Jika sudah terurut 3,6,9, dan selanjutnya belum terurut 5,7,2,....

5 akan disisipkan di antara 3 dan 6, sehingga menjadi 3,5,6,9.

7 akan disisipkan di antara 6 dan 9, sehingga menjadi 3,5,6,7,9.

2 akan disisipkan sebelum 3, sehingga menjadi 2,3,5,6,7,9. 

METODE DEVIDE AND CONQUER

Devide and Qonquer adalah metode pemecahan masalah yang bekerja dengan membagi masalah/problem menjadi beberapa sub-masalah/sub- problem yang lebih kecil, kemudian menyhelesaikan masing-masing sub- masalah secara independen dan akhirnya menggabungkan solusi masing- masing sub masalah sehingga menjadi solusi masalah semula.

Masalah
sub masalah 1
Sub solusi 1
Solusi masalah

Sub masalah 2
sub solusi 2


Sub-masalah 3
Sub solusi 3


Algortima devide and conquer menawarkan penyederhanaan masalah dengan pendekatan 3 langkah masalah:

    pembagian masalah menjadi sekecil mungkin
    penyelesaian masalah-masalah yang dikecilkan
      penggabungan solusi untuk mendapatkan  solusi optimal secara keseluruhan.


Tipe  algoritma yang mengimplementasikan/kategori D&C antara lain merge sort



4.    Metode Merge Sort
Merge sort adalah algoritma yang digunakan untuk menyusun list yang diberikan dengan cara membagi list yang diberikan menjadi dua bagian yang lebih kecil. Kedua list yang baru ini kemudian akan disusun secara terpisah. Setelah kedua buah list tersusun, maka akan dibentuk list baru yang merupakan hasil penggabungan dua buah list sebelumnya


Konsep :

1).  Array  yang  belum  terurut,  dibagi  menjadi  separuh  Proses  diulang terus sampai ditemukan bagian terkecil
2). Hasil dari setiap proses digabungkan :

Membandingkan  elemen  pertama  dari  setiap  bagian
Hapus


elemen terkecil dan letakan pada hasil
Ulangi semua proses sampai semua elemen terurut



3 9 4 1 5 2


List diatas dibagi menjadi dua bagian:

list 1:    |   list 2: 3 9 4      |   1 5 2


Kedua list yang baru disusun sendiri-sendiri menjadi:

list 1:    |   list 2: 3 4 9      |   1 2 5


Setelah itu dubentuk list baru yang merupakan gabungan kedua list tadi:

Listbaru:

1 list 1:
|
list2:
3 4 9
|
2 5

List baru: 1 2
list 1:    |   list 2:
3 4 9      |   5


List baru: 1 2 3
list 1:    |   list 2:
4 9        |   5


Listbaru:
1
2
3
4

list1:
|


list 2: 9
|
5

List baru: 1 2 3 4 5

list 1:    |   list 2: 9          |   kosong


List
baru:
1 2
3 4 5 9

list
1:
|
list 2: kosong
|
kosong


Dan akhirnya akan didapat list yang sudah tersusun:

List: 1 2 3 4 5 9

0 komentar:

Posting Komentar