2019
MERGE SORTING & QUICK SORTING
#include <iostream>
using namespace std;
#define max 100
Page | 1
temp[k] = a[i];
k++;
i++;
}
while (i < j){ //Jika nilai di Kiri (Posisi i) LEBIH KECIL dari nilai di Kanan
Page | 2
while (data[i] < pivot) { //Data di Kiri(i) Lebih Kecil dari Titik Pembagi (Pivot)
i++; // Tak ada pertukaran Data. Posisi (i) bergeser 1 kali ke arah kanan.
}
while (data[j] > pivot) { //Sama seperti nilai Kiri, jika nilai di Kanan Lebih Besar dari Pivot
j--; // Tak ada pertukaran. Posisi (j) bergeser ke Kanan 1 kali
}
if (i <= j) { /*Jika nilai di posisi (i) lebih kecil atau sama dengan (j),
maka dilakukan Pertukaran Posisi(SWAP) */
temp = data[i];
data[i] = data[j];
data[j] = temp;
if (i < high) { /* Sama seperti nilai di Kiri, jika Nilai di Kanan lebih kecil
dari nilai (i) yang telah bergeser */
quick_sort(data, i, high); // Lakukan SWAP
}
}
int gabung() {
int n, i, data[max];
Page | 3
cout << "Data sebelum diurutkan: "<< endl;
for(i=0;i<n;i++) {
cout << data[i]<<" ";
}
cout << endl;
MergeSort(data, 0, n-1);
tampil(data, n);
cout << endl << endl << endl << endl << endl;
}
int quick() {
int n, i, data[max];
quick_sort(data,0,n-1);//hasil pengurutan
tampil(data, n);
cout << endl << endl << endl << endl << endl;
Page | 4
}
int main() {
int pilihan;
ulangi:
switch(pilihan) {
case 1:
gabung();
goto ulangi;
case 2:
quick();
goto ulangi;
case 3:
cout << "Exit..." << endl;
cout << endl;
break;
default:
cout << "Pilihan tidak ada dalam Menu!" << endl;
break;
}
return 0;
}
Page | 5
SCREENSHOT:
Page | 6