You are on page 1of 3

Thuật toán Bubble Sort

1. Ý tưởng giải thuật


Thuật toán sắp xếp kiểu sủi bọt được thực hiện đơn giản bằng cách tráo đổi hai
phần từ liền kề nhau nếu chúng chưa được sắp xếp. Việc tráo đổi diễn ra đến
khi các phần tử trong hàng được sắp xếp theo trình tự nhất định.
2.Ví dụ minh họa hoạt động giải thuật
Cho dãy số ban đầu 5 3 8 4 6
B1:So sánh 5 và 3 rồi hoán đổi theo thứ tự mong muốn
=> 3 5 8 4 6
B2: So sánh 5 và 8 thấy không cần hoán đổi
B3: So sánh 8 và 4 thấy cần hoán đổi => 3 5 4 8 6
….
3. Biểu diễn giải thuật
for (i = 0; i < n; i++) { //lặp i=0, 1, 2,..,n.
for (j=0; j<n-i-1; j++ ) {//lặp j =0, 1,.., n-i-1
if (Arr[j] > Arr[j+1] ) { //nếu Arr[j]>Arr[j+1] thì đổi chỗ
temp = Arr[j];
Arr[j] = Arr[j+1];
Arr[j+1] = temp;
}
}
}
4. Đánh giá độ phức tạp của thuật toán
Trong trường hợp xấu nhất : với mỗi i ta cần n phép so sánh, với mỗi j ta cần n – i – 1
phép so sánh => độ phức tạp O(n^2)
Trong trường hợp tốt nhất: i cần 1 phép so sánh, j cần n – 1 phép so sánh => độ phức
tạp O(n)
Trong trường hợp trung bình: với mỗi i ta cần n/2 phép so sánh, với mỗi j ta cần (n - i
– 1)/2 phép so sánh => độ phức tạp O(n^2)
Code minh họa:

You might also like