Anda di halaman 1dari 9

Algoritma sorting

Untuk mengurutkan array


Algoritma bubble sort
• Contoh:
• int v[5] = { 9, 11, 3, 7, 8};
• Buatlah program untuk mengurutkan
elemen array v dari yang terkecil sampai
yang terbesar!
Ilustrasi proses bubble sort
• data = 9 11 3 7 8  ada 5 data  jadi
index nya 0 s/d 4
• Algoritma buble sort dengan 5 data
membutuhkan 4 langkah proses  jika
ada n data, berarti ada n-1 proses
• Lakukan proses-proses berikut:
Proses-1
• data awal proses 1 : 9, 11, 3, 7, 8
• cari bilangan terkecil dari 5 data([0]s/d[4]),
dan tempatkan di index 0
• caranya dengan membandingkan data-
data yang bersebelahan misal [n] dan [n-
1]. Jika [n]<[n-1], data [n] dan [n-1] ditukar.
Proses-1
• Data awal : 9, 11, 3, 7, 8
• Dari b=4 sampai b=1 kerjakan:
– Untuk b=4:
• data[4]<data[3]?  8 < 7?
• tidak  data[3] dan [4] tidak ditukar
• data=9,11,3,7,8
– Untuk b=3:
• data[3]<data[2]?  7 < 3?
• Tidak  data[2] dan [3] tidak ditukar
• Data=9,11,3,7,8
– Untuk b=2:
• data[2]<data[1]  3 < 11?
• Ya  data[1] dan [2] ditukar
• Proses menukar :temp = data[1]; data[1] = data[2] ; data[2] = temp;
• Data=9,3,11,7,8
– Untuk b=1:
• data[1]<data[0]  3 < 9?
• Ya  data[0] dan [1] ditukar
• Proses menukar :temp = data[0]; data[0] = data[1] ; data[1] = temp;
• Data=3,9,11,7,8
• Data akhir proses-1 : 3,9,11,7,8
Proses-2
• Data awal proses-2: 3,9,11,7,8
• cari bilangan terkecil dari 4 data([1]s/d[4]), dan tempatkan di index 1
• Dari b=4 sampai b=2 kerjakan:
– Untuk b=4:
• data[4]<data[3]?  8<7?
• Tidak  [3] dan [4] tidak ditukar
• Data = 3,9,11,7,8
– Untuk b=3:
• data[3]<data[2]?  7<11?
• Ya  [2] dan [3] ditukar
• Proses menukar :temp = data[2]; data[2] = data[3] ; data[3] = temp;
• Data = 3,9,7,11,8
– Untuk b=2:
• data[2]<data[1]  7<9?
• Ya  [1] dan [2] ditukar
• Proses menukar :temp = data[1]; data[1] = data[2] ; data[2] = temp;
• Data = 3,7,9,11,8
• Data akhir proses-2 : 3,7,9,11,8
Proses-3
• Data awal proses-3: 3,7,9,11,8
• cari bilangan terkecil dari 3 data([2]s/d[4]), dan tempatkan di index 2
• Dari b=4 sampai b=3 kerjakan:
– Untuk b=4:
• data[4]<data[3]?  8<11?
• ya  [3] dan [4] ditukar
• Proses menukar :temp = data[3]; data[3] = data[4] ; data[4] = temp;
• Data = 3,7,9,8,11
– Untuk b=3:
• data[3]<data[2]?  8<9?
• Ya  [2] dan [3] ditukar
• Proses menukar :temp = data[2]; data[2] = data[3] ; data[3] = temp;
• Data = 3,7,8,9,11
• Data akhir proses-3: 3,7,8,9,11
Proses-4
• Data awal proses-4 : 3,7,8,9,11
• cari bilangan terkecil dari 2 data([3] dan [4]), dan
tempatkan di index 3
• Dari b=4 sampai b=4 kerjakan:
– Untuk b=4:
• data[4]<data[3] ?  11<9 ?
• Tidak  [3] dan [4] tidak ditukar
• Data = 3,7,8,9,11
• Data akhir proses-4 : 3,7,8,9,11
• Data output algoritma buble sort : 3,7,8,9,11
Proses sorting algoritma bubble
sort dalam notasi bahasa C
• cuplikan program:
….
for (a=1; a<size; a++) { // a adalah counter proses
for(b=size-1; b>=a; b--) { // b adalah counter sub-proses dan index
if( dat[b]<dat[b-1] ) { // jika data[b] < data [b-1], tukar data
temp=dat[b-1];
dat[b-1]=dat[b];
dat[b]=temp;
}
}
}
….

Anda mungkin juga menyukai