Professional Documents
Culture Documents
1. LISTING PROGRAM
A. Menu Program Data Int
#include <stdio.h> menu(array);
#include <math.h> }
break; for(i=1;i<n;i++){
exit(0); j = i-1;
default: do{
} else
} tukar(&A[i],&A[i+1]);
if(kondisi) did_swap = 0;
} else
else }
void merge_sort(int A[], int l, ki1++;
int r, int flag){
i++;
int med;
}
merge_sort(A, med+1, r, }
flag);
j = l;
merge(A, l, med, r,
while(j <= r){
flag);
A[j] = hsl[j];
}
j++;
}
}
void merge(int A[], int l, int
med, int r, int flag){ }
int ki1 = l; void quick_sort(int A[], int p,
int r, int flag){
int ka1 = med;
int q;
int ki2 = med + 1;
if(p < r){
int ka2 = r;
q = partition(A, p, r,
int i = l, j, kondisi;
flag);
int hsl[n];
quick_sort(A, p, q,
while((ki1 <= ka1) && (ki2 flag);
<= ka2)){
quick_sort(A, q+1, r,
if(flag == 1) flag);
} else
j--;
}while(kondisi);
do{
if(flag == 1)
kondisi = A[i]
< pivot;
else
kondisi = A[i]
> pivot;
if(kondisi)
i++;
}while(kondisi);
tukar(&A[i],
&A[j]);
j--;
i++;
}else
return j;
return j;
int z;
z = *x;
*x = *y;
*y = z;
int i;
for(i=0;i<n;i++)
printf("%d ",A[i]);}
B. Menu Sorting Data Struct printf("Input banyak mahasiswa :
");
#include <stdio.h>
scanf("%d",&n);
#include <stdlib.h>
for(i=0;i<n;i++){
#include <string.h>
printf("\nData siswa ke-
#define MAX 20 %d : \n", i+1);
fflush(stdin);
} mhs; fflush(stdin);
scanf("%s",&A[i].nama);
printf("7. Exit\n");
int n, i, j, flag, sort;
printf("Pilih Menu [1-6]\t:
int main(){ ");
puts("\n\t\tMENU SORTING DATA scanf("%d", &pil);
STRUCT\n");
fflush(stdin);
menu();
switch(pil){
return 0;
case 1 :
}
urut();
void menu(){
sort_by();
int pil;
printf("\nData sebelum case 5 :
diurutkan :\n");
urut();
tampil();
sort_by();
printf("\nData setelah
diurutkan :\n"); printf("\nData sebelum
diurutkan :\n");
insertion();
tampil();
tampil();
printf("\nData setelah
break; diurutkan :\n");
urut(); tampil();
sort_by(); break;
urut(); tampil();
sort_by(); break;
printf("\n"); j--;
fflush(stdin); }
} }else{
A[j+1] = A[j]; }
j--; }
} void selection(){
while(j>=0 &&
A[j].no<key.no){
for(i=0; i<n-1; i++){
A[j+1] = A[j];
min=i;
j--;
j=i+1;
}
while(j<n){
}
if(sort==1){
}else if(sort==2){
if(flag==1){
if(flag==1){
} if(A[j].no>A[min].no)
}else{ min=j;
while(j>=0 && }
strcmpi(A[j].nama,key.nama) < 0){
}else if(sort==2){
A[j+1] = A[j];
if(flag==1){
j--;
A[i+1] =
if(strcmpi(A[j].nama,A[min].nama)<0) temp;
min=j; }
}else{ }else{
if(strcmpi(A[j].nama,A[min].nama)>0) if(A[i].no<A[i+1].no){
} A[i] =
A[i+1];
}else{
A[i+1] =
if(flag==1){ temp;
}
if(A[j].nilai<A[min].nilai)
}
min=j;
}else if(sort==2){
}else{
if(flag==1){
if(A[j].nilai>A[min].nilai)
if(strcmpi(A[i].nama,A[i+1].nama) >
min=j; 0){
} temp = A[i];
} A[i] =
A[i+1];
j++;
A[i+1] =
}
temp;
tukar(&A[i], &A[min]);
}
}
}else{
}
A[i] =
pos_akhir = n-2; A[i+1];
while(pos_akhir>=0 || A[i+1] =
did_swap==1){ temp;
if(A[i].nilai>A[i+1].nilai){
if(A[i].no>A[i+1].no){
temp = A[i];
temp = A[i];
A[i] =
A[i] = A[i+1];
A[i+1];
A[i+1] =
temp;
}
tukar(&A[i], &A[i+jarak]);
}else{
did_swap
= 1;
if(A[i].nilai<A[i+1].nilai){
}
temp = A[i];
}
A[i] =
A[i+1]; }else if(sort==2){
A[i+1] = if(flag==1){
temp;
} if(strcmpi(A[i].nama,A[i+jarak].nama)
>0){
}
} tukar(&A[i], &A[i+jarak]);
} did_swap
= 1;
pos_akhir--;
}
}
}else{
}
if(strcmpi(A[i].nama,A[i+jarak].nama)
void shell(){ <0){
while(jarak>1){ }
jarak /= 2; }
did_swap = 1; }else{
while(did_swap){ if(flag==1){
did_swap = 0;
if(A[i].nilai>A[i+jarak].nilai){
i=0;
temp =
while(i-(n-jarak)){ A[i];
if(sort==1){ A[i] =
A[i+1];
if(flag==1){
A[i+1] =
temp;
if(A[i].no>A[i+jarak].no){
}
did_swap
= 1; if(A[i].nilai<A[i+jarak].nilai){
} temp =
A[i];
}else{
A[i] =
A[i+1];
if(A[i].no<A[i+jarak].no){
A[i+1] =
temp; hasil[i]=A[kiri2];
} kiri2++;
} i++;
} }
i++; }else{
}
if(A[kiri1].no<=A[kiri2].no){
}
} hasil[i]=A[kiri1];
} kiri1++;
hasil[i]=A[kiri2];
if(kiri<kanan){
kiri2++;
med=(kiri+kanan)/2;
i++;
mergeR(kiri,med);
}
mergeR((med+1),kanan);
}
merge(kiri,med,kanan );
}else if(sort==2){
}
if(flag==1){
}
int j;
hasil[i]=A[kiri2];
while((kiri1<=kanan1)&&(kiri2<=kanan2 kiri2++;
)){
i++;
if(sort==1){
}
if(flag==1){
}else{
if(A[kiri1].no<=A[kiri2].no){
if(strcmpi(A[kiri1].nama,A[kiri2].nam
a)>=0){
hasil[i]=A[kiri1];
kiri1++; hasil[i]=A[kiri1];
i++; kiri1++;
}else{ i++;
}else{ kiri1++;
i++;
hasil[i]=A[kiri2];
}while(kiri2<=kanan2){
kiri2++;
hasil[i]=A[kiri2];
i++;
kiri2++;
}
i++;
}
}for(j=kiri;j<=kanan;j++)
}else if(sort==3){
A[j] = hasil[j];
if(flag==1){
}
int q;
hasil[i]=A[kiri1];
if(l<r){
kiri1++;
q=partition(l,r);
i++;
quick(l,q);
}else{
quick((q+1),r);
}
hasil[i]=A[kiri2];
}
kiri2++;
int partition(int l,int r){
i++;
mhs x;
}
int i = l;
}else{
int j = r;
if(A[kiri1].nilai=A[kiri2].nilai){ x = A[l];
while(i<j){
hasil[i]=A[kiri1];
if(sort==1){
kiri1++;
if (flag==1){
i++;
while(A[j].no>x.no)
}else{
j--;
hasil[i]=A[kiri2]; while(A[i].no<x.no)
kiri2++; i++;
i++; }else{
} j--;
printf("Pilihan i++;
salah\n");
}
}
}else if(sort==2){
}while(kiri1<=kanan1){
if (flag==1){
hasil[i]=A[kiri1];
mhs temp;
while(strcmpi(A[j].nama, x.nama)>0)
j--;
temp = *x;
i++; *y = temp;
}else{ }
void tampil(){
while(strcmpi(A[j].nama, x.nama)<0)
int i;
j--;
puts("\nNo\tNama\t\tNilai");
for(i=0;i<n;i++)
while(strcmpi(A[i].nama, x.nama)>0)
printf("%d\t%s\t\t
i++;
%g\n",A[i].no,A[i].nama,A[i].nilai);
}
puts("");
}else{
}
if (flag==1){
while(A[j].nilai >
x.nilai)
j--;
while(A[i].nilai <
x.nilai)
i++;
}else{
while(A[j].nilai <
x.nilai)
j--;
while(A[i].nilai >
x.nilai)
i++;
}if(i<j){
tukar(&A[i], &A[j]);
j--;
i++;
}else{
return j;
return j;
e. Merge Short
f. Quick Sort
a. Insertion
b. Selection
d. Shell
c. Bubble
e. Merge f. Quick