[toc:ul]
- Ví dụ: Cho dãy 5 hộp kẹo với số lượng kẹo trong mỗi hộp khác nhau, tương ứng là:
5 | 1 | 4 | 2 | 8 |
- Minh họa ý tưởng:
- Giải thích:
+ Ở lượt thứ nhất, so sánh hai hộp đầu tiên, nếu số kẹo ở hộp đứng trước lớn hơn số kẹp ở hộp đứng sau thì đổi vị trí hai hộp này cho nhau. Tiếp tục như vậy cho đến hết dãy là hết một lượt => ta thu được hộp cuối là hộp chứa nhiều kẹo nhất
+ Tiếp tục các lượt thứ hai, thứ ba theo cách trên, cứ lặp lại như vậy cho đến khi gặp một lượt mà suốt cả lượt đó robot không phải đổi chỗ hai hộp nào thì dãy đã được sắp xếp xong.
- Xuất phát từ đầu dãy, i = 1, xét cặp (a1, a2), nếu a1 > a2 (trái thứ tự mong muốn) thì đổi chỗ cho nhau; trái lại không cần làm gì.
- Dịch sang phải một vị trí, xét cặp (a2, a3); so sánh và đổi chỗ nếu cần
- Quá trình tiếp tục, dịch sang phải một vị trí, xét cặp (ai+1, ai+2) so sánh và đổi chỗ nếu cần.
- Khi hết dãy thì xong một lượt xét các cặp số kề nhau để đổi chỗ.
- Thực hiện nhiều lượt như trên cho đến khi không còn bất kì cặp liền kề (ai, ai+1) nào trái thứ tự mong muốn, ta được dãy đã sắp xếp.
Chú ý:
- Sau lượt đổi chỗ thứ nhất, giá trị lớn nhất của dãy số đã ở cuối dãy, đúng vị trí cuối cùng của nó
- Chỉ một lượt đổi chỗ chưa đảm bảo dãy có thứ tự tăng dần