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:
Algoritma Bubble Sort
wBila algoritma dituliskan dengan procedur UrutApung, dengan argumen l dan n, maka :
–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 |
"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 := ni := 1 {mulai dari bawah}while i < ba doif 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] := tempeifi := i + 1ewhile "
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 := nwhile ba > 1 doi := 1 {mulai dari bawah}while i < ba doif l[i] < l[i+1] then {tukarkan}temp := l[i]l[i] := l[i+1]l[i+1] := tempeifi := i + 1ewhileba := ba – 1ewhile"
"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"