Skip to content

Instantly share code, notes, and snippets.

@derohimat
Last active May 31, 2017 07:21
Show Gist options
  • Save derohimat/7c0081e48d7bbfab8de1f34bd91f0d84 to your computer and use it in GitHub Desktop.
Save derohimat/7c0081e48d7bbfab8de1f34bd91f0d84 to your computer and use it in GitHub Desktop.
sort header
#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;
}
#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