You are on page 1of 9

PRAKTEK ALGORITMA & STRUKTUR DATA

MENU SORTING 123 ASCENDING - DESCENDING

Oleh :
Dinmas Rizki Kurniawan (2103187085)

Dosen :
Umi Sa'adah, S.Kom., M.Kom.

PROGRAM STUDI TEKNIK INFORMATIKA


DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
2019
A. Listing Program
#include <stdio.h>
#include <stdlib.h>
#define N 5

void insertion(int []);


void selection(int []);
void bubble(int []);
void backup(int []);
void restore(int []);
void menuSorting();

int arr[N]={4, 2, 5, 3, 1};


int arrTemp[N];

int main()
{
printf("MENU SORTING 123 ASCENDING DESCENDING");
menuSorting();
return 0;
}

void menuSorting(){
int pilih;
do{
backup(arr);

printf("\n\nArray Asal:\n");
for(int i = 0; i < N; i++){
printf("%d ", arr[i]);
}

puts("\n\nMenu Sorting");
puts("1. Insertion");
puts("2. Selection");
puts("3. Bubble");
puts("4. Exit");
printf("Pilih : ");
scanf("%d",&pilih);
if(pilih==1){
insertion(&arr);
printf("\nArray Setelah Diurutkan :\n");
for(int i = 0; i < N; i++){
printf("%d ", arr[i]);
}
printf("\n--------------------------------");

} else if(pilih==2){
selection(&arr);
printf("\nArray Setelah Diurutkan :\n");
for(int i = 0; i < N; i++){
printf("%d ", arr[i]);
}
printf("\n--------------------------------");

} else if(pilih==3){
bubble(&arr);
printf("\nArray Setelah Diurutkan :\n");
for(int i = 0; i < N; i++){
printf("%d ", arr[i]);
}
printf("\n--------------------------------");
}
restore(arr);
}while(pilih<4);
}

void insertion(int arr[]){


int i, j, k;
int key;
int ascdesc;

printf("\nMode Urut\n");
printf("1. Ascending\n");
printf("2. Descending\n");
printf("Pilih : ");
scanf("%d", &ascdesc);

for(i=1;i<N;i++){
key=arr[i];
j=i-1;
if(ascdesc == 1){
while(j>=0 && arr[j]>key){
arr[j+1]=arr[j];
j--;
}
} else {
while(j>=0 && arr[j]<key){
arr[j+1]=arr[j];
j--;
}
}
arr[j+1]=key;
}
}

void selection(int arr[]){


int i, j, k;
int min, temp;
int ascdesc;

printf("\nMode Urut\n");
printf("1. Ascending\n");
printf("2. Descending\n");
printf("Pilih : ");
scanf("%d", &ascdesc);

for(i=0; i<(N-1); i++){


min=i;
for(j=i+1; j<N; j++){
if(ascdesc == 1){
if(arr[j]<arr[min])
min=j;
} else {
if(arr[j]>arr[min])
min=j;
}
}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}

void bubble(int arr[]){


int temp, index;
int pos_akhir = N-1;
int did_swap = 1;
int ascdesc;

printf("\nMode Urut\n");
printf("1. Ascending\n");
printf("2. Descending\n");
printf("Pilih : ");
scanf("%d", &ascdesc);

while(pos_akhir > 0 && did_swap == 1){


index = 0;
did_swap = 0;
while(index < pos_akhir){
if(ascdesc == 1){
if(arr[index] > arr[index+1]){
temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
did_swap = 1;
}
} else {
if(arr[index] < arr[index+1]){
temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
did_swap = 1;
}
}
index = index + 1;
}
pos_akhir = pos_akhir - 1;
}
}

void backup(int arr[]){


int i;
for(i=0;i<N;i++){
arrTemp[i]=arr[i];
}
}

void restore(int arr[]){


int i;
for(i=0;i<N;i++){
arr[i]=arrTemp[i];
}
}
B. Output

You might also like