Professional Documents
Culture Documents
DISUSUN OLEH :
UMAR FADHLURRACHMAN
H1D015056
int data[max];
int n;
void awalan();
void bubblesort(int a[], int size);
void selectionsort();
void insertsort();
int main()
{
int i;
int pilihan;
awalan();
printf("\nMasukkan Jumlah Angka yang Ingin Diurutkan : ");
scanf("%d", &n);
for(i=0;i<n;i++) {
printf("Angka ke-%d : ", i+1);
scanf("%d", &data[i]);
}
system("cls");
awalan();
for(i=0;i<n;i++)
printf("[%d]", data[i]);
switch(pilihan) {
case 1 : {
printf("\nSorting Secara Bubble Sort");
printf("\n==========================\n");
bubblesort(data, n);
printf("Data Setelah Diurutkan : \n");
for(i=0;i<n;i++)
printf("%d ", data[i]);
break;
}
case 2 : {
printf("\nSorting Secara Selection Sort");
printf("\n============================\n");
selectionsort();
printf("Data Setelah Diurutkan : \n");
for(i=0;i<n;i++)
printf("%d ", data[i]);
break;
}
case 3 : {
printf("\nSorting Secara Insertion Sort");
printf("\n============================\n");
insertsort();
printf("Data Setelah Diurutkan : \n");
for(i=0;i<n;i++)
printf("%d ", data[i]);
break;
}
default : {
printf("Metode Sorting Tidak Tersedia :)");
}
}
}
void awalan() {
printf("----------------------------------------------");
printf("\n----------------METODE SORTING----------------");
printf("\n----------------------------------------------");
}
void bubblesort(int a[], int size) {
int switched = 1;
int hold = 0;
int i = 0;
int j = 0;
size -= 1;
1. Insertion sort
a. Dasar Teori
Insertion Sort merupakan algoritma yang efisien untuk mengurutkan angka
yang mempunyai jumlah elemen sedikit.
Dimana : - Input : deretan angka sejumlah n buah
- Output : permutasi (pengurutan) sejumlah n angka dari input
yang sudah
terurut secara ascending maupun descending.
Metode penyisipan (Insertion sort) bertujuan untuk menjadikan bagian sisi kiri
array terurutkan sampai dengan seluruh array berhasil diurutkan.
Metode ini mengurutkan bilangan-bilangan yang telah dibaca; dan berikutnya
secara
berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca
ke sisi kiri array yang telah terurut.
b. Source code
c. Screenshot
d. Penjelasan
Prosedur ini akan berjalan ketika di panggil oleh fungsi main yang
menerima nilai dari array a dan variable total yang bertipe int dari main atau
fungsi utama.
Pada insertsort ini memerlukan 3 variable lagi yaitu i, j, dan temp yang bertipe
integer
Program dimulai dengan perulangan for yang memberi nilai pada variable i yaitu
1 dan kondisi nilai i tidak boleh lebih dari variable total. Incerement 1 atau nilai
variable i akan bertambah 1 ketika for akan kembali melakukan perulangan.
Ketika perulangan for kondisinya salah maka akan masuk pada tahap berikutnya
yaitu memanggil prosedur cetak diisi dengan variable a dan total yang sudah
dapat diperhitungan insertsort ini.
Memanggil prosedur cetak maka mengakhiri prosedur insertsort ini.
e. Ilustrasi
Berikutnya, kita perlu menyisipkan bilangan ketiga (4) ke dalam bagian biru/abu-
abu sehingga setelah penyisipan tersebut, bagian biru/abu-abu tetap dalam
keadaan terurut secara relatif;
CARANYA :
pertama : Ambil bilangan ketiga (4).
Kedua : Geser bilangan kedua (10) shg ada ruang untuk disisipi.
Sekarang, tiga bilangan pertama sudah terurut secara relatif dan kita sisipkan
bilangan keempat kepada tiga bilangan pertama tsb. Setelah penyisipan,
empat bilangan pertama haruslah dalam keadaan terurut secara relatif.
d. Penjelasan
Pada fungsi sorting diatas menggunakan metode pengurutan data secara
ascending dengan bubble sort, pada fungsi void bubblesort(int a[], int total) Dalam
fungsi bubble sort diatas juga terdapat variabel yang bersifat lokal yakni temp, i, j dan
variabel-variabel tersebut bersifat integer.
Jadi cara kerja fungsi bubble sort pada source code diatas yakni
membandingkan 2 elemen array menggunakan proses perulangan
for(i=0; i<total-1; i++){
for(j=0; j<(total-1)-i; j++){
Setelah dibandingkan kemudian program akan melakukan pengecekan kondisi
if(a[j] > a[j+1]){
Dari pembandingan kedua elemen tadi jika a[j] > a[j+1] atau elemen sebelah kanan
lebih besar dari elemen sebelah kiri maka program akan melakukan proses penukaran
(swap) dengan perintah berikut :
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
Jadi nilai dari a[j] akan disimpan dalam variabel temp, lalu posisi dari a[j] yang
sebelumnya akan diisikan oleh nilai dari a[j+1], Selanjutnya posisi dari a[j+1] tadi
diisikan dengan isi dari variabel temp yang mana telah berisi nilai dari a[j]. Dengan
demikian sekarang posisi dari elemen sebelah kiri sudah berpindah ke sebelah kanan
begitu juga berpindah ke sebelah kiri.
Namun jika kedua elemen tersebut tidak memenuhi kondisi (a[j] > a[j+1]) maka tidak
terjadi proses penukaran (swap) dan melanjutkan ke perulangan selanjutnya.
Proses pembandingan 2 elemen dimulai dari elemen yang paling awal sampai ke
elemen paling akhir.
e. Ilustrasi
Elemen array : 0 1 2 3 4
2 1 3 4 5
Variabel temp
1 3 1 2
2
Varabel temp
1 3 1 2
Variabel temp
1 2 3 4 5
Variabel temp
1 2 3 4 5
1 2 3 4 5
3. Shell Sort
a. Dasar Teori
Metode Shell Sort disebut juga dengan metode pertambahan menurun
(diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada
tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini
mengurutkan data dengan cara membandingkan suatu data dengan data lain yang
memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan.
Metode Shell Sort memiliki beberapa kelebihan serta kekurangan, antara lain:
Kelebihan:
Kekurangan :
4. Source Code
temp = a[i];
6. Penjelasan:
Pada program ini kita tambahkan variabel i, j, increment, serta temp. Kemudian
dilakukan pengulangan yang syaratnya variabel increment merupakan hasil dari
pembagian variabel total yang berisikan banyak data keseluruhan dengan 2. Lalu pada
tiap pengulangan, isi dari variabel increment dibagi sama dengan 2. Lalu pada
pengulangan for tadi tedapat pengulangan kembali yang syaratnya i diberikan nilai
increment yang dimana nilai dari variabel i kurang dari variabel total dan pada setiap
pengulangannya nilai i ditambah 1. Di dalam pengulangan yang kedua, array data i
akan dipindahkan ke dalam variabel temp. Lalu di sana terdapat pengulangan kembali
dengan for yang memiliki syarat nilai dari variabel i dimasukkan pada variabel j yang
dimana variabel j harus lebih dari sama dengan nilai dari variabel increment. Dan
pada setiap pengulangan nilai dari variabel j akan dikurangi dengan nilai pada
variabel increment. Kemudian masuk pada percabangan if yang dimana jika nilai dari
variabel temp kurang dari array j dikurangi increment makan array yang berisi dengan
data j akan dimasukkan nilai pada array yang berisi data j dikurangi increment tadi.
7. Ilustrasi
2 1 3 4 5
1 2 3 4 5