DAA - Bubble Sort
Bubble Sort adalah algoritme pengurutan dasar, yang bekerja dengan bertukar berulang kali elemen yang berdekatan, jika perlu. Ketika tidak ada pertukaran yang diperlukan, file tersebut diurutkan.
Ini adalah teknik paling sederhana di antara semua algoritma pengurutan.
Algorithm: Sequential-Bubble-Sort (A)
fori← 1 to length [A] do
for j ← length [A] down-to i +1 do
if A[A] < A[j - 1] then
Exchange A[j] ↔ A[j-1]
Penerapan
voidbubbleSort(int numbers[], intarray_size) {
inti, j, temp;
for (i = (array_size - 1); i >= 0; i--)
for (j = 1; j <= i; j++)
if (numbers[j - 1] > numbers[j]) {
temp = numbers[j-1];
numbers[j - 1] = numbers[j];
numbers[j] = temp;
}
}
Analisis
Di sini, jumlah perbandingannya
1 + 2 + 3 +...+ (n - 1) = n(n - 1)/2 = O(n2)
Jelas, grafik menunjukkan n2 sifat dari jenis gelembung.
Dalam algoritma ini, jumlah perbandingan tidak tergantung pada kumpulan datanya, yaitu apakah elemen input yang diberikan berada dalam urutan yang diurutkan atau dalam urutan terbalik atau secara acak.
Persyaratan Memori
Dari algoritma yang disebutkan di atas, terlihat jelas bahwa bubble sort tidak membutuhkan memori tambahan.
Contoh
Unsorted list: |
|
1 st iterasi:
5 > 2 swap |
|
|||||||
5 > 1 swap |
|
|||||||
5 > 4 swap |
|
|||||||
5 > 3 swap |
|
|||||||
5 < 7 no swap |
|
|||||||
7 > 6 swap |
|
2 nd iterasi:
2 > 1 swap |
|
|||||||
2 < 4 no swap |
|
|||||||
4 > 3 swap |
|
|||||||
4 < 5 no swap |
|
|||||||
5 < 6 no swap |
|
Tidak ada perubahan di 3 rd , 4 th , 5 th dan 6 th iterasi.
Akhirnya,
the sorted list is |
|