DAA - Sắp xếp bong bóng
Bubble Sort là một thuật toán sắp xếp cơ bản, hoạt động bằng cách trao đổi nhiều lần các phần tử liền kề, nếu cần. Khi không cần trao đổi, tệp sẽ được sắp xếp.
Đây là kỹ thuật đơn giản nhất trong số tất cả các thuật toán sắp xếp.
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]
Thực hiện
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;
}
}
Phân tích
Ở đây, số lượng so sánh là
1 + 2 + 3 +...+ (n - 1) = n(n - 1)/2 = O(n2)
Rõ ràng, biểu đồ cho thấy n2 bản chất của loại bong bóng.
Trong thuật toán này, số lượng so sánh không phụ thuộc vào tập dữ liệu, nghĩa là liệu các phần tử đầu vào được cung cấp có theo thứ tự được sắp xếp hay theo thứ tự ngược lại hoặc ngẫu nhiên hay không.
Yêu cầu bộ nhớ
Từ thuật toán đã nêu ở trên, rõ ràng là sắp xếp bong bóng không yêu cầu thêm bộ nhớ.
Thí dụ
Unsorted list: |
|
1 st lặp:
5 > 2 swap |
|
|||||||
5 > 1 swap |
|
|||||||
5 > 4 swap |
|
|||||||
5 > 3 swap |
|
|||||||
5 < 7 no swap |
|
|||||||
7 > 6 swap |
|
2 nd lặp:
2 > 1 swap |
|
|||||||
2 < 4 no swap |
|
|||||||
4 > 3 swap |
|
|||||||
4 < 5 no swap |
|
|||||||
5 < 6 no swap |
|
Không có sự thay đổi trong 3 thứ 4 thứ 5 thứ 6 thứ lặp đi lặp lại.
Cuối cùng,
the sorted list is |
|