Jumat, 30 November 2018

Merge Sort


Nama : Rayhan Fadhillah
NPM  : 45118943
Kelas : 1DC02
Mata Kuliah : Algoritma & Pemrograman A
Dosen : Kunto Bayu A, ST


4. Merge Sort 

Pengertian : yaitu metode yang 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 hasill penggabungan dari dua buah larik sebelumnya.Menurut keefektifannya, algoritma ini bekerja dengan tingkat keefektifan O(nlog(n)).


Contoh Program Merge Sort :


#include <iostream.h>
#include <stdio.h>
#include <conio.h>
int data[100];
int d,e;
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(data[tempAwal] < data[tempMid])
            temp[i] = data[tempAwal],tempAwal++;
        else
            temp[i] = data[tempMid],tempMid++;
        i++;
    }
    while(tempAwal < mid)
        temp[i] = data[tempAwal],tempAwal++,i++;
    while(tempMid < akhir)
        temp[i] = data[tempMid],tempMid++,i++;
    for(int j=0,k=awal;j<i,k<akhir;j++,k++)
        cout<<data[k]<<' '<<temp[j]<<endl, data[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 d,e;
    int n;
    cout<<"Masukan banya data = ";cin>>n;
    cout<<"Masukan data yang akan di susun = ";
    for(int i=0;i<n;i++)
        cin>>data[i];
    merge(0,n);
    for(int i=0;i<n;i++)
        cout<<data[i]<<' ';
    getch();
    return 0;
    scanf("%d", d,e);
}
  Contoh Gambar Merge Sort :


Tidak ada komentar:

Posting Komentar