Jumat, 13 Mei 2016

Kasus 8.6 Merge Sort

Bismillahirohmanirrohim
Assalamualikum w.w,

Berikut ini adalah materi dari SEARCING AND SORTING. Program yang dibuat yaitu tentang Merge Sort:

Program menggunakan Dev C++:

#include <iostream>
#include <cstdlib>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

typedef int larik[10];
void masuk_data(int A[], int n){
     int i;
for (i = 0; i < n; i++){
 cout << "Data ke-%d : ",i+1;
 cin >> A[i];
     }
}
void cetak_data(const int A[], int n) {
     int i;
for (i = 0; i < n; i++)
     cout << "%d ",A[i];
     cout << "\n";
}
void merge(larik a, int kiri, int tengah, int kanan){
     int bagianKiri, posTemp, banyakElemen, i;
larik temp;
bagianKiri = tengah - 1;
posTemp = kiri;
banyakElemen = kanan - kiri + 1;
while ((kiri <= bagianKiri) &&(tengah <= kanan))
         if ((a[kiri] <= a[tengah])){
  temp[posTemp] = a[kiri];
           posTemp = posTemp + 1;
  kiri = kiri + 1;
else{
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
        }
/* kopi bagian kiri */
while ((kiri <= bagianKiri)) {
temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
}/* kopi bagian kanan */
         while ((tengah <= kanan)) {
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
         } /* kopi kembali ke array asal */
for (i = 1; i <= banyakElemen; i++){
a[kanan] = temp[kanan];
kanan = kanan - 1;
}
}
void merge_sort(larik A, int kiri, int kanan){
    int tengah;
if ((kiri < kanan)){
tengah = (kiri + kanan) / 2;
merge_sort(A, kiri, tengah);
merge_sort(A, tengah + 1, kanan);
merge(A, kiri, tengah + 1, kanan);
}
}
int main(int argc, char** argv) {
    int n;
larik data;
cout << "Berapa data array : ";
cin >> n;
masuk_data(data, n);
cetak_data(data, n);
merge_sort(data, 0, n-1);
cetak_data(data, n);

return 0;

}
Gambar program nya:


Gambar output nya:




Alhamdulillah
Selamat mencoba dan semoga bermanfaat :)
Wassalamualikum w.w.

Unknown

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

0 komentar:

Posting Komentar

 

Copyright @ 2013 Salman.