You are on page 1of 6

PRAKTEK ALGORITMA & STRUKTUR DATA

SORTING MENU ASCENDING - DESCENDING PERFORMANCE

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>
#include <time.h>
#include <math.h>
#define MAX 100000

void insertion(int *);


void selection(int *);
void backup(int *);
void restore(int *);
void generate(int []);
void menuSorting();

int n;
int arr[MAX];
int arrTemp[MAX];
long t1, t2;

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

void menuSorting(){
int pilih;
printf("\n\nBerapa jumlah data? ");
scanf("%d",&n);
srand(time(NULL));
generate(arr);
do{
backup(arr);

puts("\n\nMenu Sorting");
puts("1. Insertion");
puts("2. Selection");
puts("3. Exit");
printf("Pilih : ");
scanf("%d",&pilih);
if(pilih==1){
time(&t1);
insertion(&arr);
time(&t2);
printf("Durasi = %d\n", t2-t1);
} else if(pilih==2){
time(&t1);
selection(&arr);
time(&t2);
printf("Durasi = %d\n", t2-t1);
}
restore(arr);
}while(pilih<3);
}

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 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];
}
}

void generate(int x[]){


int i;
for(i=0; i<n; i++)
x[i] = rand()/1000;
}

B. Output

You might also like