Merge Sort Algorithm Pseudocode in C++ - Oke sobat disini saya akan sharing sedikit tentang materi c++ yaitu materi tentang Merge sort,merge sort adalah pengurutan data ata merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.ini prinsip dari metode merge sort,oke sobat langsung aja ini dia implementasi dari Merge Sort :
- #include <iostream.h>
- #include <conio.h>
- int a[50];
- void merge(int,int,int);
- void merge_sort(int low,int high)
- {
- int mid;
- if(low<high)
- {
- mid=(low+high)/2;
- merge_sort(low,mid);
- merge_sort(mid+1,high);
- merge(low,mid,high);
- }
- }
- void merge(int low,int mid,int high)
- {
- int h,i,j,b[50],k;
- h=low;
- i=low;
- j=mid+1;
- while((h<=mid)&&(j<=high))
- {
- if(a[h]<=a[j])
- {
- b[i]=a[h]; h++;
- }
- else
- {
- b[i]=a[j]; j++;
- } i++;
- }
- if(h>mid)
- {
- for(k=j;k<=high;k++)
- {
- b[i]=a[k]; i++;
- }
- }
- else
- {
- for(k=h;k<=mid;k++)
- {
- b[i]=a[k]; i++;
- }
- }
- for(k=low;k<=high;k++)
- a[k]=b[k];
- }
- void main()
- {
- int num,i; cout<<"******************************************************************* *************"<<endl;
- cout<<" MERGE SORT PROGRAM "<<endl;
- cout<<"******************************************************************* *************"<<endl;
- cout<<endl<<endl;
- cout<<"Masukkan Banyak Bilangan: ";cin>>num;
- cout<<endl;
- cout<<"Sekarang masukkan "<< num <<" Bilangan yang ingin Diurutkan :"<<endl;
- for(i=1;i<=num;i++)
- {
- cout<<"Bilangan ke-"<<i<<" ";cin>>a[i] ;
- }
- merge_sort(1,num);
- cout<<endl;
- cout<<"Hasil akhir pengurutan :"<<endl;
- cout<<endl;
- for(i=1;i<=num;i++)
- cout<<a[i]<<" ";
- cout<<endl<<endl<<endl<<endl;
- getch();
- }
EmoticonEmoticon