Bubble sort · Sắp xếp nổi bọt
Put the smallest time first
- Three race times sit in an array:
14,9,11. The smallest should come first. - Compare each pair of neighbours. When the left one is larger, swap them.
- That single comparison does not finish the list. The next pair is compared after it.
Đặt thời gian nhỏ nhất lên đầu
- Ba thời gian đua nằm trong mảng:
14,9,11. Giá trị nhỏ nhất nên đứng đầu. - So sánh từng cặp kẻ bên cạnh. Khi kẻ trái lớn hơn, hãy hoán đổi chúng.
- Phép so sánh đơn lẻ đó không hoàn tất danh sách. Cặp tiếp theo sẽ được so sánh sau đó.
DECLARE Score : ARRAY[1:3] OF INTEGER
DECLARE J, Temp : INTEGER
Score[1] ← 14
Score[2] ← 9
Score[3] ← 11
FOR J ← 1 TO 2
IF Score[J] > Score[J + 1]
THEN
Temp ← Score[J]
Score[J] ← Score[J + 1]
Score[J + 1] ← Temp
ENDIF
NEXT J
OUTPUT Score[1]
OUTPUT Score[2]
OUTPUT Score[3]
Repeat the pass
- One pass of the inner loop bubbles the largest value it sees toward the end.
- The outer loop repeats the pass. For four values, three passes are enough.
- This is the syllabus's bubble sort. A linear search, which you wrote earlier, only looks. A sort rearranges.
Lặp lại lượt đi
- Một lượt đi của vòng lặp bên trong đẩy giá trị lớn nhất mà nó nhìn thấy về phía cuối.
- Vòng lặp bên ngoài lặp lại lượt đi. Với bốn giá trị, ba lượt đi là đủ.
- Đây là sắp xếp nổi bọt theo chương trình học. Tìm kiếm tuyến tính, mà bạn đã viết trước đó, chỉ tìm kiếm. Sắp xếp sắp xếp lại.
DECLARE Score : ARRAY[1:4] OF INTEGER
DECLARE I, J, Temp : INTEGER
Score[1] ← 4
Score[2] ← 1
Score[3] ← 3
Score[4] ← 2
FOR I ← 1 TO 3
FOR J ← 1 TO 3
IF Score[J] > Score[J + 1]
THEN
Temp ← Score[J]
Score[J] ← Score[J + 1]
Score[J + 1] ← Temp
ENDIF
NEXT J
NEXT I
OUTPUT Score[1]
OUTPUT Score[2]
OUTPUT Score[3]
OUTPUT Score[4]
Watch out
- Swap with a
Tempvariable.Score[J] ← Score[J + 1]alone deletes the left value. - The inner
NEXTnamesJ. The outerNEXTnamesI.
Lưu ý
- Hoán đổi với một biến
Temp. Chỉ riêngScore[J] ← Score[J + 1]sẽ xóa giá trị bên trái. NEXTbên trong đặt tên choJ.NEXTbên ngoài đặt tên choI.
Common mistakes
- The test is "left is greater", so the smaller value moves left. The other way sorts into reverse order.
- Arrays in this course count from 1. The last pair is the cell just before the end, and the last cell.
Lỗi thường gặp
- Điều kiện là "trái lớn hơn", nên giá trị nhỏ hơn di chuyển sang trái. Cách ngược lại sắp xếp theo thứ tự giảm dần.
- Mảng trong khóa học này tính từ 1. Cặp cuối cùng là ô ngay trước cuối cùng, và ô cuối cùng.
Now you try
- The first task is one pass. The second is the full sort. Output each value on its own line.
- Press Check answer to test it.
Bây giờ bạn thử
- Nhiệm vụ đầu tiên là một lượt đi. Nhiệm vụ thứ hai là sắp xếp đầy đủ. In mỗi giá trị trên một dòng riêng.
- Nhấn Kiểm tra đáp án để thử nghiệm.
The array Score holds 14, 9, 11. Make one pass that swaps a neighbour when the left value is larger. Output the three values, one per line (9, then 11, then 14). · Mảng Score chứa 14, 9, 11. Thực hiện một lần lặp để hoán đổi các phần tử kề nhau khi giá trị bên trái lớn hơn. Xuất ba giá trị, mỗi giá trị trên một dòng (9, sau đó 11, rồi 14).
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
The array Score holds 4, 1, 3, 2. Bubble-sort it into ascending order and output the four values, one per line. · Mảng Score chứa 4, 1, 3, 2. Sắp xếp nổi bọt thành thứ tự tăng dần và xuất bốn giá trị, mỗi giá trị một dòng.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.