Membuat Merge Sort Dengan C++

     Menurut Wikipedia Merge Sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945.Prinsip utama yang diimplementasikan pada algoritma urut gabung seringkali disebut sebagai pecah-belah dan taklukkan (bahasa Inggris:divide and conquer). Cara kerja algoritma urut gabung adalah membagi larik data yang diberikan menjadi dua bagian yang lebih kecil. Kedua larik yang baru tersebut kemudian akan diurutkan secara terpisah. Setelah kedua buah list tersusun, maka akan dibentuk larik baru sebagai hasil penggabungan dari dua buah larik sebelumnya. Menurut keefektifannya, alogaritma ini bekerja dengan tingkat keefektifan O(nlog(n))
Berkas:Merge sort animation2.gif
Sumber:Wikipedia
------------------------------------------------------------------------------------------------------------
Contoh Sintax Merge Sort Dengan C++:

#include <iostream>
using namespace std;
int bagus[100];

void mergeSort(int awal, int mid, int akhir)
{
    cout<<endl;
    int temp[100], tempAwal = awal, tempMid = mid, i = 0;
    while(tempAwal < mid && tempMid < akhir)
    {
        if(bagus[tempAwal] < bagus[tempMid])
            temp[i] = bagus[tempAwal],tempAwal++;
        else
            temp[i] = bagus[tempMid],tempMid++;
        i++;
    }
    while(tempAwal < mid)  
        temp[i] = bagus[tempAwal],tempAwal++,i++;
    while(tempMid < akhir)
        temp[i] = bagus[tempMid],tempMid++,i++;
    for(int j=0,k=awal;j<i,k<akhir;j++,k++)  
        cout<<bagus[k]<<' '<<temp[j]<<endl, bagus[k] = temp[j]; 
}
void merge(int awal, int akhir) 
{
    if(akhir-awal != 1)
    {
        int mid = (awal+akhir)/2;
        merge(awal, mid);
        merge(mid, akhir);
        mergeSort(awal, mid, akhir);
    }
}

int main()
{
    int n;
    cout<<"Masukan banya data = ";cin>>n;
     
    for(int i=0;i<n;i++){
    cout<<"Masukan data yang akan di susun = ";
     cin>>bagus[i];
}
     
    merge(0,n);
    for(int i=0;i<n;i++)
        cout<<bagus[i]<<' ';
    return 0;
}

==SELAMAT MENCOBA==


1 comment: