Cùng một bài, đọc bằng chữ. Nhanh hơn và tìm lại được bằng Ctrl+F.
So hai số cạnh nhau, sai thì đổi
Đi từ trái sang phải, so hai phần tử cạnh nhau, sai thứ tự thì đổi chỗ. Một lần đi hết mảng gọi là một lượt. Lặp cho tới khi một lượt không đổi chỗ lần nào.
[5, 1, 4, 2, 8] sau một lượt thành [1, 4, 2, 5, 8]
Một lượt đi hết mảng
- So 5 và 1Sai thứ tự, đổi chỗ. Còn 1 5 4 2 8
- So 5 và 4Đổi tiếp. Còn 1 4 5 2 8
- So 5 và 2Đổi tiếp. Còn 1 4 2 5 8
- So 5 và 8Đúng rồi, giữ nguyên. Số 8 đã về đúng chỗ
Cờ dừng sớm
Vì sao nó chậm
Số phép so sánh tăng theo bình phương số phần tử: gấp đôi dữ liệu thì chậm gấp bốn. 100 phần tử tốn khoảng 5.000 lần so sánh, 10.000 phần tử tốn khoảng 50 triệu.
Tại chỗ và ổn định
Nó làm ngay trên mảng gốc, chỉ tốn thêm một biến tạm. Hai phần tử bằng nhau giữ nguyên thứ tự cũ, tính chất đó gọi là ổn định và cần khi bạn sắp theo nhiều khoá liên tiếp.
Bubble sort: được gì, mất gì
Ưu điểm
Code ngắn, đọc một lần là hiểu
Sắp xếp tại chỗ, và ổn định
Mảng đã đúng sẵn thì cờ dừng sớm cứu
Nhược điểm
n² phép so sánh, mảng lớn là chậm hẳn
Đổi chỗ nhiều hơn selection sort
Là công cụ dạy, không phải công cụ chạy
Lưu lại để chạy tay sau
Loạt bài thuật toán sắp xếp cho dev Việt Nam.











