Nama : Habil
Kelas : 1 D4 Teknik Informatika B
NRP : 3120600055
Listing Code
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int n=10;
void bubble_sort(int[],int n);
void shell_sort(int[],int n);
void tampil(int[],int n);
int main()
{
while(1)
{
int bilangan[10] = {0,18,6,26,19,15,11,29,26,24};
int opt;
printf("Menu Sorting\n");
printf("1. Bubble Sort\n");
printf("2. Shell Sort\n");
printf("3. Keluar\n");
printf("Pilihan anda = ");
scanf("%d",&opt);
switch(opt)
{
case 1:
tampil(bilangan,n);
bubble_sort(bilangan,n);
tampil(bilangan,n);
puts(" ");
break;
case 2:
tampil(bilangan,n);
shell_sort(bilangan,n);
tampil(bilangan,n);
puts(" ");
break;
default:
exit(0);
}
}
return 0;
}
Output
2. Buatlah fungsi untuk generate bilangan random. Modifikasi program nomor 1 untuk
mengurutkan data dengan jumlah elemen >= 20000 yang digenerate secara random.
Tambahkan perhitungan waktu komputasinya. Tambahkan fungsi mode_urut() untuk
memilih menu pengurutan secara ascending ataukah descending. Buatlah fungsi
generate_random() untuk mengenerate sejumlah bilangan random. Gunakan header math.h
fungsi rand() dan srand().
Listing Code
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <time.h>
int n=100000;
void bubble_sort(int[],int n);
void shell_sort(int[],int n);
void tampil(int[],int n);
void generate(int[]);
void copy_arr(int[],int[]);
int modeUrut();
time_t t1,t2;
long int waktukomputasi;
int main()
{
int A[n],B[n];
printf("Isi berapa data ? ");
scanf("%d",&n);
srand(time(NULL));
generate(A);
tampil(A,n);
copy_arr(A,B);
while(1)
{
copy_arr(B,A);
int opt;
printf("Menu Sorting\n");
printf("1. Bubble Sort\n");
printf("2. Shell Sort\n");
printf("3. Keluar\n");
printf("Pilihan anda = ");
scanf("%d",&opt);
switch(opt)
{
case 1:
time(&t1);
bubble_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
tampil(A,n);
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
case 2:
time(&t1);
shell_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
tampil(A,n);
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
default:
exit(0);
}
}
return 0;
}
for(i=0;i<n;i++){
b[i]=a[i];
}
}
int modeUrut()
{
int opt;
printf("\nPengurutan yang dipilih\n");
printf("1. Ascending\n");
printf("2. Descending\n");
printf("Pilihan anda ? ");
scanf("%d",&opt);
if(opt==1){
return 1;
}else{
return 2;
}
}
Output
Bubble-Ascending
Bubble-Descending
Shell-Asccending
Shell-Descending
3. Tambahkan 2 metode ini ke dalam program menu yang telah dibuat sebelumnya (Insertion
dan Selection short). Untuk semua metode:
Inisialisasi elemen array awal menggunakan fungsi generate random variabel dan juga
menampilkan waktu eksekusi.
Tanpa menampilkan perhitungan total jumlah pembandingan (comparison = C), jumlah
penukaran (swapping = S) dan jumlah pergeseran (movement = M).
Listing Code
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <time.h>
int n=100000;
void bubble_sort(int[],int n);
void shell_sort(int[],int n);
void insertion_sort(int[],int n);
void selection_sort(int[],int n);
void tampil(int[],int n);
void generate(int[]);
void copy_arr(int[],int[]);
int modeUrut();
time_t t1,t2;
long int waktukomputasi;
int main()
{
int A[n],B[n];
printf("Isi berapa data ? ");
scanf("%d",&n);
srand(time(NULL));
generate(A);
copy_arr(A,B);
while(1)
{
copy_arr(B,A);
int opt;
printf("Menu Sorting\n");
printf("1. Bubble Sort\n");
printf("2. Shell Sort\n");
printf("3. Insertion Sort\n");
printf("4. Selection Sort\n");
printf("5. Keluar\n");
printf("Pilihan anda = ");
scanf("%d",&opt);
switch(opt)
{
case 1:
time(&t1);
bubble_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
case 2:
time(&t1);
shell_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
case 3:
time(&t1);
insertion_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
case 4:
time(&t1);
selection_sort(A,n);
time(&t2);
waktukomputasi=t2-t1;
printf("Durasinya adalah %ld\n",waktukomputasi);
puts(" ");
break;
default:
exit(0);
}
}
return 0;
}
for(i=0;i<n;i++){
b[i]=a[i];
}
}
int modeUrut()
{
int opt;
printf("\nPengurutan yang dipilih\n");
printf("1. Ascending\n");
printf("2. Descending\n");
printf("Pilihan anda ? ");
scanf("%d",&opt);
if(opt==1){
return 1;
}else{
return 2;
}
}
Output