Pertemuan ke-8, Kasus 8.6

Merge Sort.

Assalamu’alaikum w.w.,

Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Merge Sort.

Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi 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;
}

Sekian dan Terima Kasih, Semoga Bermanfaat.

Comments

Popular posts from this blog

Program Menghitung Hambatan Seri dan Pararel

Menghitung nilai ipk mahasiswa

Rencana Kuliah Bulan ke-3 : Menggeser Elemen Array