#include <cstdlib>
#include <iostream>
using namespace std;
void masuk_data(int A[], int n){
int i;
for(i=0;i<n;i++){
cout<<"Data ke-"<<i+1<<"=";
cin>>A[i];
}
}
void cetak_data(const int A[], int n){
int i;
for(i=0;i<n;i++)
cout<<A[i]<<" ";
cout<<endl;
}
void merge(int a[100],int kiri,int tengah,int kanan){
int bagianKiri,posTemp,banyakElemen,i;
int temp[100];
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;
}
while((kiri<=bagianKiri)){
temp[posTemp]=a[kiri];
posTemp=posTemp+1;
kiri=kiri+1;
}
while((tengah<=kanan)){
temp[posTemp]=a[tengah];
posTemp=posTemp+1;
tengah=tengah+1;
}
for(i=1;i<=banyakElemen;i++){
a[kanan]=temp[kanan];
kanan=kanan-1;
}
}
void merge_sort(int A[100], 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;
int data[100];
cout<<"Berapa data array : ";
cin>>n;
masuk_data(data,n);
cetak_data(data,n);
merge_sort(data,0,n-1);
cetak_data(data,n);
system("PAUSE");
return EXIT_SUCCESS;
}
semoga bermanfaat .....
0 Komentar Terbaik
Post a Comment