Last active
May 31, 2017 07:21
-
-
Save derohimat/7c0081e48d7bbfab8de1f34bd91f0d84 to your computer and use it in GitHub Desktop.
sort header
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include "sort.h" | |
using namespace std; | |
int main() { | |
int dataArr[100]; | |
int menu, lanjut, n, i, sdhInput; | |
menu = 0; | |
lanjut = 0; | |
sdhInput = 0; | |
while (lanjut < 1) { | |
menu = mainMenu(); | |
switch (menu) { | |
case 1 : { | |
cout << "Input banyak array : "; | |
cin >> n; | |
for (i = 0; i < n; i++) { | |
cout << "Input data " << i + 1 << " : "; | |
cin >> dataArr[i]; | |
} | |
sdhInput = 1; | |
break; | |
} | |
case 2 : { | |
if (sdhInput == 1) { | |
cout << endl << "Sebelum Sortir" << endl; | |
tampilData(dataArr, n); | |
cout << "Setelah Sortir" << endl; | |
insertSort(dataArr, n); | |
tampilData(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 3 : { | |
if (sdhInput == 1) { | |
cout << endl << "Sebelum Sortir" << endl; | |
tampilData(dataArr, n); | |
cout << "Setelah Sortir" << endl; | |
selectionSort(dataArr, n); | |
tampilData(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 4 : { | |
if (sdhInput == 1) { | |
cout << endl << "Sebelum Sortir" << endl; | |
tampilData(dataArr, n); | |
cout << "Setelah Sortir" << endl; | |
bubbleSort(dataArr, n); | |
tampilData(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 5 : { | |
if (sdhInput == 1) { | |
cout << endl << "Sebelum Sortir" << endl; | |
tampilData(dataArr, n); | |
cout << "Setelah Sortir" << endl; | |
quickSort(dataArr, n); | |
tampilData(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 6 : { | |
if (sdhInput == 1) { | |
linearSearch(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 7 : { | |
if (sdhInput == 1) { | |
binarySearch(dataArr, n); | |
} else { | |
cout << endl << "Array belum diinput." << endl; | |
} | |
break; | |
} | |
case 8 : { | |
lanjut = 1; | |
break; | |
} | |
default : { | |
cout << endl << "Menu yang anda masukan tidak valid." << endl << endl; | |
break; | |
} | |
} | |
} | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
#ifndef SOURCE_H | |
#define SOURCE_H | |
int mainMenu() { | |
int menu, lanjut; | |
lanjut = 0; | |
menu = 0; | |
//pilih menu | |
while (lanjut < 1) { | |
cout << "Daftar Menu" << endl; | |
cout << "1. Input Array" << endl; | |
cout << "2. Insertion Sort" << endl; | |
cout << "3. Selection Sort" << endl; | |
cout << "4. Bubble Sort" << endl; | |
cout << "5. Quick Sort" << endl; | |
cout << "6. Linear Search" << endl; | |
cout << "7. Binary Search" << endl; | |
cout << "8. exit" << endl; | |
cout << "Pilih salah satu menu diatas : "; | |
cin >> menu; | |
//pengecekan jika bukan 1,2,3,4,5,6 dan 7 maka tidak valid | |
if (menu != 1 && menu != 2 && menu != 3 && menu != 4 && menu != 5 && menu != 6 && menu != 7 && menu != 8) { | |
cout << endl << "Menu yang anda masukan tidak valid." << endl << endl; | |
} else { | |
lanjut = 1; | |
} | |
} | |
return menu; | |
} | |
void tampilData(int *dataArr, int panjang) { | |
int i; | |
//tampil data | |
for (i = 0; i < panjang; i++) { | |
cout << "Data ke " << i + 1 << " : " << dataArr[i] << endl; | |
} | |
} | |
void insertSort(int *dataArr, int panjang) { | |
int i, j, temp; | |
//Sort | |
for (i = 0; i < panjang; i++) { | |
for (j = i; j >= panjang - 1; j--) { | |
if (j >= 0) { | |
//di bandingin, sama data sebelumnya | |
if (dataArr[j] < dataArr[j - 1]) { | |
//di swap isi arraynya | |
temp = dataArr[j]; | |
dataArr[j] = dataArr[j - 1]; | |
dataArr[j - 1] = temp; | |
} else { | |
break; | |
} | |
} else { | |
break; | |
} | |
} | |
} | |
} | |
void selectionSort(int *dataArr, int panjang) { | |
int i, j, temp, IdxTemp; | |
//loop array -1, karna nanti pembandingnya +1 | |
for (i = 0; i < panjang - 1; i++) { | |
temp = dataArr[i]; | |
IdxTemp = i; | |
//loop array +1 | |
for (j = i + 1; j < panjang; j++) { | |
//cari data paling kecil | |
if (temp > dataArr[j]) { | |
temp = dataArr[j]; | |
//tampung index | |
IdxTemp = j; | |
} | |
} | |
//setelah di dapat, di tuker | |
temp = dataArr[i]; | |
dataArr[i] = dataArr[IdxTemp]; | |
dataArr[IdxTemp] = temp; | |
} | |
} | |
void bubbleSort(int *dataArr, int panjang) { | |
int i, j, temp; | |
//loop array | |
for (i = 1; i < panjang; ++i) { | |
for (j = 0; j < (panjang - i); ++j) { | |
//dibandingkan datanya dengan yg selanjutnya | |
if (dataArr[j] > dataArr[j + 1]) { | |
//dituker karna data | |
temp = dataArr[j]; | |
dataArr[j] = dataArr[j + 1]; | |
dataArr[j + 1] = temp; | |
} | |
} | |
} | |
} | |
void q_sort(int dataArr[], int left, int right) { | |
int pivot, l_hold, r_hold; | |
l_hold = left; | |
r_hold = right; | |
pivot = dataArr[left]; | |
while (left < right) { | |
while ((dataArr[right] >= pivot) && (left < right)) | |
right--; | |
if (left != right) { | |
dataArr[left] = dataArr[right]; | |
left++; | |
} | |
while ((dataArr[left] <= pivot) && (left < right)) { | |
left++; | |
} | |
if (left != right) { | |
dataArr[right] = dataArr[left]; | |
right--; | |
} | |
} | |
dataArr[left] = pivot; | |
pivot = left; | |
left = l_hold; | |
right = r_hold; | |
if (left < pivot) | |
q_sort(dataArr, left, pivot - 1); | |
if (right > pivot) | |
q_sort(dataArr, pivot + 1, right); | |
} | |
void quickSort(int *DataArr, int Panjang) { | |
q_sort(DataArr, 0, Panjang - 1); | |
} | |
void linearSearch(int *DataArr, int Panjang) { | |
int i, key, IsAda; | |
cout << "Cari data : "; | |
cin >> key; | |
IsAda = 0; | |
for (i = 0; i < Panjang; ++i) { | |
if (DataArr[i] == key) { | |
IsAda = 1; | |
} | |
} | |
if (IsAda == 1) { | |
cout << "Data " << key << " ditemukan." << endl; | |
} else { | |
cout << "Data " << key << " tidak ditemukan" << endl; | |
} | |
} | |
void binarySearch(int *dataArr, int panjang) { | |
int low, high, key, isAda, mid = 0; | |
cout << "Cari data : "; | |
cin >> key; | |
low = 0; | |
high = panjang - 1; | |
isAda = 0; | |
while (low <= high) { | |
mid = (low + high) / 2; | |
if (key == dataArr[mid]) { | |
isAda = 1; | |
break; | |
} else if (key < dataArr[mid]) { | |
high = mid - 1; | |
} else { | |
low = mid + 1; | |
} | |
} | |
if (isAda == 1) { | |
cout << "Data " << key << " ditemukan." << endl; | |
} else { | |
cout << "Data " << key << " tidak ditemukan" << endl; | |
} | |
} | |
#endif // SOURCE_H |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment