Pages

Banner 468 x 60px

 

Senin, Januari 07, 2019

Sorting Metode Devide And Conquer

0 komentar


      Pengurutan   (Sorting).   proses   mangatur   sekumpulan   obyek/datmenurut urutan atau susunan tertentu.
    Urutan obyek/data tersebut dapat menaik (ascending) atau menurun
(descending).
      Data  yan diurutkan    dapat  berup data  bertip dasar  atau  data bertipe struktur
      Data  yan sudah  teruru memiliki  keuntungan  yait Mempercepaproses pencarian data.


Metode Pengurutan
Algoritmpengurutan / sortinbermacam-macam dan setiap algoritma ini memiliki kinerja yang berbeda-beda.   Berikut ini macam-macam algoritma pengurutan:


1 MetodSelectioSort
2 MetodBublSort
3 MetodMergSort
4 Metode QuicSort
5 MetodInsertion


Hal  y mempengaruh Kecepatan  Algoritm Sortin adalah  Jumlah
Operasi Perbandingan & Jumlah Operasi Pemindahan Data


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

    Merupakan kombinasi antara sortindan searching

      Untuk setiap proses, akan dicari elemen-elemen yang beludiurutkan yanmemiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat ddalam 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 yoptimal

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)

Tekniyang diinspirasi oleh gelembung sabun yang  berada  dipermukaan  air.  Karena  berat jeni gelembung  lebi ringan  dar pad airmaka gelembung akan naikeatas. (benda yang berat akan terbenam, benda ringan terapung).Elemen data yang paling kecil diapungkan diangkat keatas  melalui proses pertukaran.

Bubble Sort mengurutkan datdengan carmembandingkan elemen sekarang dengan elemen berikutnya

Algoritma Bubble Sort


1 Pengecekan mulai dari data ke-1 sampai  datke-n
2 Bandingkan datke-n dengan datsebelumnya (n-1)
3 Jiklebikecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya     ( sebelumny ) satu persatu  (n-1,n-2,n-3,....dst)
4 Jiklebibesar maktidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.




Analogi :
  Larik dengan urut menaik, elemen larik yanberharga paling kecil diapungkan , artiny diangkat  ke  atas  (atau  k ujun kiri  larik) melalui proses  pertukaran.
  Proses pengapungan ini dilakukan sebanyak N-1 langkah dengan N
adalah ukuran larik.
  Pad akhir  setiap  langkah  ke-I,  larik  L[1..N akan  terdiri  atas du bagian  yaitu  bagian  yan sudah  terurut,  yaitu  L[1..I]  dan bagian  yan belum   terurut L[I+1..N]. Setelah langkah terakhir, diperoleh larik L[1..Nyang terurut menaik.


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

Algoritma Metode gelembung :

-     langkah 0 : Baca vector yang akan diurutkan (dalaprogram 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, tukarkanilai 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. MetodINSERTION SORT (Sisip)

 Algoritma    ini    dianalogikan    seperti mengurutkan kartuselembar demi selembar kartu diambil dan disisipka(insert) ke tempat yang seharusnyPengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecilmaka akan ditempatkan (diinsert) diposisi yang seharusnya. Padpenyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang

Analogi :

      Mengurutkan satu set kartdari kartu yanbernilai paling kecil hinggyanpalinbesar.
      Seluruh kartu diletakkan pada meja, kita sebut meja pertama, disusudari kiri ke kanan dan atas ke bawah.
    Kemudian  pada meja kedua tempat meletakkan kartu yandiurutkan.
      Ambil kartu pertama yanterletak pada pojok kiri atas meja pertamdan letakkan pada meja kedua.
      Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yanberada pada meja kedua, kemudian letakkan pada urutan yansesuai setelah perbandingan.
      Proses tersebut akan berlangsunhingga seluruh kartu pada mejpertama 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 sebelu3, sehingga menjadi 2,3,5,6,7,9

METODE DEVIDE AND CONQUER

Devide and Qonquer adalah metode pemecahan masalah yanbekerja dengan membagmasalah/problem menjadi beberapa sub-masalah/subproblem yang lebih kecil, kemudian menyhelesaikamasing-masing sub- masalah secara independen dan akhirnymenggabungkan solusi masingmasing sub masalah sehingga menjadi solusi masalah semula.

Masalah
sumasalah 1
Sub solusi 1
Solusi masalah

Sumasalah 2
sub solusi 2


Sub-masalah 3
Sub solusi 3


Algortima devide anconquer menawarkan penyederhanaan masalah dengan pendekatan 3 langkah masalah:

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


Tip algoritma yanmengimplementasikan/kategori D&C antara lain merge sort



4.    MetodMergSort
Merge sort adalah algoritma yandigunakan untuk menyusun list yandiberikan dengan cara membagi list yandiberikan menjaddua bagian yang lebih kecil. Kedua list yanbaru ini kemudian akadisusun secara terpisah. Setelah kedua buah list tersusun, maka akan dibentuk list baru yanmerupakan hasil penggabungan dua buah list sebelumnya


Konsep :

1).  Arra yan belu terurut,  dibag menjad separu Proses  diulang terus sampai ditemukan bagian terkecil
2). Hasil dari setiaproses digabungkan :

Membandingka elemen  pertam dari  setiap  bagian
Hapus


elemen terkecil dan letakapada 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


Kedulist yang bardisusun sendiri-sendiri menjadi:

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


Setelah itu dubentuk list baryang 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