Uploaded by User84884

SORTING (BUBLE SORT)

advertisement
SORTING (PENGURUTAN)
1. Tujuan
Setelah mempelajari modul ini, mahasiswa diharapkan:
a. Mampu menjelaskan mengenai algoritma Sorting
b. Mampu membat dan mendeklarasikan struktural algoritma Sorting
c.
Mampu menerapkan dan mengimplementasikan algoritma Sorting
2. Dasar Teori
Pengurutan data dalam struktur data sangat penting terutama untuk
data yang bertipe data numerik ataupun karakter. Pengurutan dapat
dilakukan secara ascending (urut naik) dan descending (urut turun).
Pengurutan (Sorting) adalah proses pengurutan data yang sebelumnya
disusun secara acak sehingga tersusun secara teratur menurut aturan
tertentu.
Contoh:
Data Acak
3 9 6 21 10 1
13
Ascending
1 3 6 9 10 13
Descending
21
21 13 10 9 6 3
1
Deklarasi Array Sorting
Mendeklarasikan array secara global:
int data[100];
int n; //untuk jumlah data
1 FT – Jurusan TE – S1 PTI &
S1 TI 2015
Fungsi Tukar 2 Buah Data:
void tukar (int a, int b) {
int tmp;
tmp = data [a] ;
data [a] = data
[b] ; data [b] =
tmp ;
BUBBLE SORT
Merupakan metode sorting termudah, diberi nama “Bubble” karena proses
pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang
tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort
mengurutkan data dengan cara membandingkan elemen sekarang dengan
elemen berikutnya. Jika elemen sekarang lebih besar dari elemen berikutnya
maka kedua elemen tersebut ditukar, jika pengurutan ascending. Jika
elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen
tersebut ditukar, jika pengurutan descending. Algoritma ini seolah-olah
1 FT – Jurusan TE – S1 PTI &
S1 TI 2015
Modul Praktikum Algoritma dan
menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan,
tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka
bubble
sort
akan
mengulangi
proses,
demikian
seterusnya.
Kapan
berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan
tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan
yang telah diinginkan.
Gambar 1. Proses ke-1 Algoritma
Bubble Sort
Pada gambar di atas, pengecekan dimulai dari data yang paling akhir,
kemudian dibandingkan dengan data di depannya, jika data di depannya
lebih besar maka akan ditukar.
Gambar 2. Proses ke-2 Algoritma
Bubble Sorting
Pada proses ke-2, pengecekan dilakukan sampai dengan data ke-2
karena data pertama pasting sudah paling kecil.
Modul Praktikum Algoritma dan
2
FT – Jurusan TE – S1 PTI & S1 TI 2015
Gambar 3. Proses ke-3 Algoritma Bubble Sorting
Gambar 4. Proses ke-4 Algoritma Bubble Sorting
Gambar 5. Proses ke-5 Algortima Bubble Sorting
Sintaks program fungsi Bubble Sort
void bubble sort () {
for (int i = 1; i<n; i++) {
for (int j = n-1;
if (data [j]
j>=1;
j--) {
< data
[j-1]) tukar (j, j-1); //
ascending
}
}
Dengan prosedur di atas, data terurut naik (ascending), untuk urut turun
(descending) silahkan ubah bagian:
if (data [j]
Menjadi:
< data [j-1] )
if
(data [j] >
data [j-1])
tukar (j, j-1);
Algoritma Bubble Sorting mudah dalam sintaks, tetapi lebih
hemat dibandingkan dengan algoritma sorting yang lain.
PROGRAM ALGORITMA BUBBLE SORT
BAHASA C
SOURCE CODE :
#include <stdio.h>
void bubbleSort(int arr[], int n){
int i, j, tmp;
for(i = 0; i < n; i++){
for(j=0; j < n-i-1; j ++){
if(arr[j] > arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
int main() {
int array[100], n, i, j;
printf("Masukkan banyak elemen: ");
scanf("%d", &n);
printf("Masukkan nilai: \n");
for(i = 0; i < n; i++){
scanf("%d", &array[i]);
}
bubbleSort(array, n);
printf("Hasil pengurutan sebagai berikut:\n");
for(i = 0; i < n; i++){
printf("%d ", array[i]);
}
printf("\n");
}
Simpan source code dengan nama file bubblesort.c, tetapi sesuaikan aja dengan
nama file yang dinginkan dan jangan lupa harus berektensi .c
PENJELASAN :
Penjelasan source algoritma bubble sort di bahasa C setiap barisnya :

baris 3 : mendeklarasikan fungsi void bubbleSort dengan menerima
inputan arr dan n yang bertipe integer.

baris 4 : mendeklarasikan variable i dan j untuk perulangan dan tmp
untuk variable penukaran sementara.

baris 5-6 : melakukakan perulangan sebanyak n dan perulangan
sebanyak nilai variable n dikurang i dan dikurang satu.

baris 7-11 : cek kondisi jika nilai variable arr pada index ke j lebih
besar dari nilai varible arr pada index ke j+1 maka melakukan penukaran
nilai variable

baris 17 : mendeklarasi variable array, n, i dan j bertipe integer.

baris 18-19 : melakukan input nilai dari user untuk variable n yang
digunakan sebagai jumlah data.
baris 21-25 : melakukan input nilai dari user untuk variable array

dari setiap data.
baris 27 : memanggil fungsi bubbleSort dengan memasukkan variable

array dan n.
baris 29-33 : menampilkan hasil pengurutan bubbleSort.

COMPILE & RUN :
Untuk cara melakukan compile dan run source codenya sebagai berikut:
$ gcc -o bubblesort bubblesort.c
$ ./bubblesort
berikut hasil screenshot dari compile dan run source codenya:
Gambar Program Algoritma Bubble Sort di Bahasa C
CONTOH INPUTAN
Masukkan banyak elemen: 10
Masukkan nilai:
10
50
20
30
15
25
12
40
45
1
CONTOH KELUARAN :
Hasil pengurutan sebagai berikut:
1 10 12 15 20 25 30 40 45 50
KESIMPULAN :
Dari hasil program, source code algoritma bubble sort tersebut berhasil dapat
dijalankan tanpa ada error dan menampilkan hasil pengurutan yang sesuai.
berikut ada langkah-langkah proses pengurutan yang dilakukan program:
PROSES SORTING ARRAY [10, 50, 20, 30, 15, 25, 12,
40, 45, 1]
Putaran ke 1 : [10 50 20 30 15 25 12 40 45 1]
Proses ke 1 [10 50 20 30 15 25 12 40 45 1]
Proses ke 2 [10 20 50 30 15 25 12 40 45 1]
Proses ke 3 [10 20 30 50 15 25 12 40 45 1]
Proses ke 4 [10 20 30 15 50 25 12 40 45 1]
Proses ke 5 [10 20 30 15 25 50 12 40 45 1]
Proses ke 6 [10 20 30 15 25 12 50 40 45 1]
Proses ke 7 [10 20 30 15 25 12 40 50 45 1]
Proses ke 8 [10 20 30 15 25 12 40 45 50 1]
Proses ke 9 [10 20 30 15 25 12 40 45 1 50]
Putaran ke 2 : [10 20 30 15 25 12 40 45 1 50]
Proses ke 1 [10 20 30 15 25 12 40 45 1 50]
Proses ke 2 [10 20 30 15 25 12 40 45 1 50]
Proses ke 3 [10 20 15 30 25 12 40 45 1 50]
Proses ke 4 [10 20 15 25 30 12 40 45 1 50]
Proses ke 5 [10 20 15 25 12 30 40 45 1 50]
Proses ke 6 [10 20 15 25 12 30 40 45 1 50]
Proses ke 7 [10 20 15 25 12 30 40 45 1 50]
Proses ke 8 [10 20 15 25 12 30 40 1 45 50]
Proses ke 9 [10 20 15 25 12 30 40 1 45 50]
Putaran ke 3 : [10 20 15 25 12 30 40 1 45 50]
Proses ke 1 [10 20 15 25 12 30 40 1 45 50]
Proses ke 2 [10 15 20 25 12 30 40 1 45 50]
Proses ke 3 [10 15 20 25 12 30 40 1 45 50]
Proses ke 4 [10 15 20 12 25 30 40 1 45 50]
Proses ke 5 [10 15 20 12 25 30 40 1 45 50]
Proses ke 6 [10 15 20 12 25 30 40 1 45 50]
Proses ke 7 [10 15 20 12 25 30 1 40 45 50]
Proses ke 8 [10 15 20 12 25 30 1 40 45 50]
Proses ke 9 [10 15 20 12 25 30 1 40 45 50]
Putaran ke 4 : [10 15 20 12 25 30 1 40 45 50]
Proses ke 1 [10 15 20 12 25 30 1 40 45 50]
Proses ke 2 [10 15 20 12 25 30 1 40 45 50]
Proses ke 3 [10 15 12 20 25 30 1 40 45 50]
Proses ke 4 [10 15 12 20 25 30 1 40 45 50]
Proses ke 5 [10 15 12 20 25 30 1 40 45 50]
Proses ke 6 [10 15 12 20 25 1 30 40 45 50]
Proses ke 7 [10 15 12 20 25 1 30 40 45 50]
Proses ke 8 [10 15 12 20 25 1 30 40 45 50]
Proses ke 9 [10 15 12 20 25 1 30 40 45 50]
Putaran ke 5 : [10 15 12 20 25 1 30 40 45 50]
Proses ke 1 [10 15 12 20 25 1 30 40 45 50]
Proses ke 2 [10 12 15 20 25 1 30 40 45 50]
Proses ke 3 [10 12 15 20 25 1 30 40 45 50]
Proses ke 4 [10 12 15 20 25 1 30 40 45 50]
Proses ke 5 [10 12 15 20 1 25 30 40 45 50]
Proses ke 6 [10 12 15 20 1 25 30 40 45 50]
Proses ke 7 [10 12 15 20 1 25 30 40 45 50]
Proses ke 8 [10 12 15 20 1 25 30 40 45 50]
Proses ke 9 [10 12 15 20 1 25 30 40 45 50]
Putaran ke 6 : [10 12 15 20 1 25 30 40 45 50]
Proses ke 1 [10 12 15 20 1 25 30 40 45 50]
Proses ke 2 [10 12 15 20 1 25 30 40 45 50]
Proses ke 3 [10 12 15 20 1 25 30 40 45 50]
Proses ke 4 [10 12 15 1 20 25 30 40 45 50]
Proses ke 5 [10 12 15 1 20 25 30 40 45 50]
Proses ke 6 [10 12 15 1 20 25 30 40 45 50]
Proses ke 7 [10 12 15 1 20 25 30 40 45 50]
Proses ke 8 [10 12 15 1 20 25 30 40 45 50]
Proses ke 9 [10 12 15 1 20 25 30 40 45 50]
Putaran ke 7 : [10 12 15 1 20 25 30 40 45 50]
Proses ke 1 [10 12 15 1 20 25 30 40 45 50]
Proses ke 2 [10 12 15 1 20 25 30 40 45 50]
Proses ke 3 [10 12 1 15 20 25 30 40 45 50]
Proses ke 4 [10 12 1 15 20 25 30 40 45 50]
Proses ke 5 [10 12 1 15 20 25 30 40 45 50]
Proses ke 6 [10 12 1 15 20 25 30 40 45 50]
Proses ke 7 [10 12 1 15 20 25 30 40 45 50]
Proses ke 8 [10 12 1 15 20 25 30 40 45 50]
Proses ke 9 [10 12 1 15 20 25 30 40 45 50]
Putaran ke 8 : [10 12 1 15 20 25 30 40 45 50]
Proses ke 1 [10 12 1 15 20 25 30 40 45 50]
Proses ke 2 [10 1 12 15 20 25 30 40 45 50]
Proses ke 3 [10 1 12 15 20 25 30 40 45 50]
Proses ke 4 [10 1 12 15 20 25 30 40 45 50]
Proses ke 5 [10 1 12 15 20 25 30 40 45 50]
Proses ke 6 [10 1 12 15 20 25 30 40 45 50]
Proses ke 7 [10 1 12 15 20 25 30 40 45 50]
Proses ke 8 [10 1 12 15 20 25 30 40 45 50]
Proses ke 9 [10 1 12 15 20 25 30 40 45 50]
Putaran ke 9 : [10 1 12 15 20 25 30 40 45 50]
Proses ke 1 [1 10 12 15 20 25 30 40 45 50]
Proses ke 2 [1 10 12 15 20 25 30 40 45 50]
Proses ke 3 [1 10 12 15 20 25 30 40 45 50]
Proses ke 4 [1 10 12 15 20 25 30 40 45 50]
Proses ke 5 [1 10 12 15 20 25 30 40 45 50]
Proses ke 6 [1 10 12 15 20 25 30 40 45 50]
Proses ke 7 [1 10 12 15 20 25 30 40 45 50]
Proses ke 8 [1 10 12 15 20 25 30 40 45 50]
Proses ke 9 [1 10 12 15 20 25 30 40 45 50]
Putaran ke 10 : [1 10 12 15 20 25 30 40 45 50]
Proses ke 1 [1 10 12 15 20 25 30 40 45 50]
Proses ke 2 [1 10 12 15 20 25 30 40 45 50]
Proses ke 3 [1 10 12 15 20 25 30 40 45 50]
Proses ke 4 [1 10 12 15 20 25 30 40 45 50]
Proses ke 5 [1 10 12 15 20 25 30 40 45 50]
Proses ke 6 [1 10 12 15 20 25 30 40 45 50]
Proses ke 7 [1 10 12 15 20 25 30 40 45 50]
Proses ke 8 [1 10 12 15 20 25 30 40 45 50]
Proses ke 9 [1 10 12 15 20 25 30 40 45 50]
Dari analisis proses pengurutan diatas terdapat 10 kali putaran dan setiap
putaran memiliki 9 proses. Pada saat putaran ke 9 sudah selesai tetapi tetap
melakukan putaran sampai ke 10 karena ini yang menjadikan kelemahan
algoritma bubble sort yang masih kurang effisien.
Download