728x90 AdSpace

  • Latest News

    Categories

    Jumat, 13 Mei 2016

    Kasus 8.6 (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;
    }

    m



    Output/hasil compiler dari program tersebut :




    kunjungi blog saudaran ku untuk nomor yg lain :
    • Blogger Comments
    • Facebook Comments

    0 komentar:

    Posting Komentar

    Item Reviewed: Kasus 8.6 (Merge Sort) Rating: 5 Reviewed By: Unknown
    Scroll to Top