#include <conio.h>
#include <iostream.h>
typedef int larik [20]; //type data for merge
void read(int A[], int n){ //proses input dan read data
for (int i=0; i<n; i++){
cout <<"Data ke - " << i + 1 <<" : ";
cin >> A[i]; }
}
void print(int A[], int n){ //print data
for (int i = 0; i < n; i++){
cout << A[i] <<" ";
}}
void swap(int *a, int *b){ //swap data
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void minimum(int A[], int dari, int n, int *tempat){
int i, min;
min = A[dari];
*tempat = dari;
for (i = dari + 1; i < n; i++)
if (A[i] < min){
min = A[i];
*tempat = i;}
}
void bubble_sort(int x[], int n){ // bubble sort
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++){
if (x[i] > x [j]) swap (&x[i], &x[j]);
}
}
void selection_sort(int A[], int n){ // selection sort
int i, t;
for (i = 0; i < n; i++){
minimum (A, i, n, &t);
swap (&A[i], &A[t]);}
}
void merge(larik a, int kiri, int tengah, int kanan){
int bagkir, postemp, bykel, i;
larik temp;
bagkir = tengah -1;
postemp = kiri;
bykel = kanan - kiri + 1;
while ((kiri <= bagkir) &&
(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;}
//copy to left
while ((kiri <= bagkir)){
temp[postemp] = a[kiri];
postemp = postemp + 1;
kiri = kiri + 1;}
//copy to right
while ((tengah <= kanan)){
temp[postemp] = a[tengah];
postemp = postemp + 1;
tengah = tengah + 1;}
//copy to source array
for (i = 1; i <= bykel; 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 data[10], n;
int pilih;
t1:
cout << "Pilihan sorting \tProgram BY lukman Reza 07 juni 2012";
cout<<"\n1. Bubble Sort\n2. Selection Sort\n3. Merge Sort\n\n";
cout << "Pilihan : ";
cin >> pilih;
switch (pilih){
case 1 : //bubble sort
cout <<"BUBBLE SORT";
cout <<"\n\nBanyak data : ";
cin >> n;
read(data, n);
cout <<"\nData yang anda masukan : ";
print(data, n);
cout<<endl;
bubble_sort(data, n);
cout <<"\nSetelah diurutkan (Bubble Sort) : ";
print(data, n);
cout <<endl; break;
case 2 : //selection sort
cout <<"SELECTION SORT";
cout <<"\n\nBanyak data : ";
cin >> n;
read(data, n);
cout <<"\nData yang anda masukan : ";
print(data, n);
cout<<endl;
selection_sort(data, n);
cout <<"\nSetelah diurutkan (Selection Sort): ";
print(data, n);
cout <<endl; break;
case 3 : //merge sort
cout <<"MERGE SORT";
cout <<"\n\nBanyak data : ";
cin >> n;
read(data, n);
cout <<"\nData yang anda masukan : ";
print(data, n);
cout<<endl;
merge_sort(data, 0, n - 1);
cout <<"\nSetelah diurutkan (Merge Sort): ";
print(data, n);
cout <<endl; break;
default : cout <<"\n\n\t!!!PILIHAN GAK ADA, PILIH YANG BENER!\n\n"; goto t1;
}
getch();
return 0;
}
cara penggunaan:
Monggow di pelajari... jangan cuma co_pas. :D
0 Komentar