document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <iostream>
  2. #include <conio.h>
  3. // By : Dian Nugraha -> 1112091000081
  4. void Merge(int* ipA, int iEnd1, int iEnd2) {
  5.     int i = 0;
  6.     int j = iEnd1;
  7.     int k = 0;
  8.     int* ipTemp = new int[iEnd2];
  9.     // Ambil setiap elemen terkecil berikutnya
  10.     while (i < iEnd1 && j < iEnd2) {
  11.         if (ipA[i] < ipA[j]) {
  12.             ipTemp[k] = ipA[i];
  13.             ++i;
  14.         } else {
  15.             ipTemp[k] = ipA[j];
  16.             ++j;
  17.         }
  18.         ++k;
  19.     }
  20.     // Menyalin setiap elemen yang tersisa dari array 1
  21.     while (i < iEnd1) {
  22.         ipTemp[k] = ipA[i];
  23.         ++i;
  24.         ++k;
  25.     }
  26.     // Menyalin setiap elemen yang tersisa dari 2 Array
  27.     while (j < iEnd2) {
  28.         ipTemp[k] = ipA[j];
  29.         ++j;
  30.         ++k;
  31.     }
  32.     // Salin array bergabung kembali dengan aslinya
  33.     for (int iIndex = 0; iIndex < iEnd2; ++iIndex) {
  34.         ipA[iIndex] = ipTemp[iIndex];
  35.     }
  36.     delete [] ipTemp;
  37. }
  38.  
  39. int main() {
  40.     using namespace std;
  41.     cout<< "\\t MERGE SORT \\n\\n";
  42.     int iaArray[] = {22,10, 15, 38,2};
  43.     int iSize = 6;
  44.  
  45.     // Proses Pengurutan dengan Merge Sort
  46.     for (int i = 1; i < iSize; i *= 2) {
  47.         for (int j = 0; j < iSize - i; j += 2*i) {  //1. Kelompokan deret bilangan kedalam 2 bagian, 4 bagian, 8 bagian, ......dst   ? (2n)
  48.             int iEnd2 = (2*i < iSize - j) ? 2*i : iSize - j;
  49.             Merge(&(iaArray[j]), i, iEnd2);
  50.         }
  51.     }
  52.     cout<<"Data yang akan di urut \\t: 22 10 15 3 8 2\\n";
  53.     // Output dari Merge sort dalam array
  54.         cout<<"Data yang telah di urut : ";
  55.  
  56.     for (int i = 0; i < iSize; i++){
  57.         cout << iaArray[i] << " ";
  58.     }
  59.     cout << endl;
  60.     getch();
  61.     return 0;
  62. }
  63. // By : Dian Nugraha -> 1112091000081
');