Program Gabungan Merge, Bubble, Selection Sort

Berhubung programnya panjang, langsung ajha nih...


#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

Posting Komentar

0 Komentar