Sabtu, 29 Oktober 2011

Bubble sort (Pengertian Bubble sorting)

Bubble sort is a straightforward and simplistic method of sorting data that is used in computer science education. The algorithm starts at the beginning of the data set. It compares the first two elements, and if the first is greater than the second, it swaps them. It continues doing this for each pair of adjacent elements to the end of the data set. It then starts again with the first two elements, repeating until no swaps have occurred on the last pass. While simple, this algorithm is highly inefficient and is rarely used except in education. A slightly better variant, cocktail sort, works by inverting the ordering criteria and the pass direction on alternating passes. Its average case and worst case is same O(n²).
Pengertian lain mengenai Bubble Sort adalah:

Hampir sama dengan Selection Sort
Cara pengurutan elemen yang paling sederhana
Menggunakan metode pembandingan dan pertukaran
Tiap putaran, elemen yang bersebelahan akan dibandingkan dan isinya akan ditukar jika nilainya tidak berurut

Sebelum
Sesudah
Algoritma Bubble Sort

"ba:= n
i := 1 {mulai dari bawah}if l[i] < l[i+1] then {jika elemen itu lebih ringan dari pada elemen di atasnya}   {tukarkan}  temp := l[i]  l[i] := l[i+1]  l[i+1] := temp 
eif "


wProses pemeriksaan dan penukaran seperti itu harus dilakukan mulai dari bawah sampai ke batas atas pengapungan.
wJadi, i harus digerakkan mulai dari 1 sampai dengan ba-1; algoritmanya menjadi:
"ba := n
i := 1 {mulai dari bawah}
while i < ba do
  if l[i] < l[i+1] then {jika elemen itu lebih ringan   dari pada elemen di atasnya}
     {tukarkan}
  temp := l[i]
  l[i] := l[i+1]
  l[i+1] := temp
  eif
  i := i + 1
ewhile "

Berikutnya, batas atas pengapungan ba dikurangi dengan 1

wProses pengapungan yang sama dilakukan mulai dari bawah sampai ke ba
wDilakukan sampai dengan nilai ba menjadi 2
Algoritmanya menjadi: 
"ba := n
while ba > 1 do
  i := 1 {mulai dari bawah}
  while i < ba do
  if l[i] < l[i+1] then {tukarkan}
  temp := l[i]
  l[i] := l[i+1]
  l[i+1] := temp
  eif
  i := i + 1
  ewhile
  ba := ba – 1
ewhile"
wBila algoritma dituliskan dengan procedur UrutApung, dengan argumen l dan n, maka :
 "proc UrutApung(l,n)ba := nwhile ba > 1 do  i := 1 {mulai dari bawah}  while i < ba do  if l[i] < l[i+1] then {tukarkan}  temp := l[i]  l[i] := l[i+1]  l[i+1] := temp  eif   i := i + 1   ewhile    ba := ba – 1 ewhile
eproc"