Thuật toán sắp xếp bằng tráo đổi
Trang 1THUẬT TOÁN SẮP XẾP
BẰNG TRÁO ĐỔI
Lê Anh Nhật Email: leanhnhat@tuyenquang.edu.vn
Trang 21 Xác định bài toán Input Dãy A gồm N số nguyên a1, a2, , aN.
Dãy A được sắp xếp lại thành dãy không giảm.
Output
Trang 32 Ý tưởng
• Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau ta đổi chỗ chúng cho nhau
• Việc đó được lặp lại cho đến khi không có sự đổi chỗ nào xảy ra nữa
?
Trang 43 Thuật toán liệt kê
Bước 1 Nhập N, các số hạng a1, a2, , aN;
Bước 2 M := N;
Bước 3 Nếu M<2 thì đưa ra dãy A đã được
sắp xếp, rồi kết thúc;
Bước 4 M := M-1; i := 0;
Trang 53 Thuật toán liệt kê
Bước 5 i := i + 1;
Bước 6 Nếu i > M thì quay lại bước 3;
Bước 7 Nếu ai > ai+1 thì đổi ai và ai+1 cho nhau;
Bước 8 Quay lại bước 5;
Trang 64 Thuật toán sơ đồ khối
Nhập: N, a1, a2, , aN
M := N
M < 2 S
M := M-1; i := 0; Đưa dãy A ra
End.
Begin
Đ
i := i+1;
i > M
ai > ai+1 Tráo đổi ai và ai+1
Đ
S
S
Đ
Trang 75 Ví dụ mô phỏng
6 2 5 3 7 8 10 7 12 4
Cho dãy số có 10 phần tử:
Trang 85 Ví dụ mô phỏng
6 2 5 3 7 8 10 7 12 4
M = 9;
2 65 6 3 6 7 10 4 12
Trang 95 Ví dụ mô phỏng
M = 8;
2 5 3 3 5 6 7 8 7 8 7 10 4 12 4 10
Trang 105 Ví dụ mô phỏng
M = 7;
2 3 5 6 7 7 4 8 4 10 12 8
Trang 115 Ví dụ mô phỏng
M = 6;
2 3 5 6 7 7 4 7 4 8 10 12
Trang 125 Ví dụ mô phỏng
M = 5;
2 3 5 6 7 4 4 7 7 8 10 12
Trang 135 Ví dụ mô phỏng
M = 4;
2 3 5 6 4 4 6 7 7 8 10 12
Trang 145 Ví dụ mô phỏng
M = 3;
2 3 5 4 4 5 6 7 7 8 10 12
Trang 155 Ví dụ mô phỏng
M = 2;
2 3 4 5 6 7 7 8 10 12
Trang 165 Ví dụ mô phỏng
M = 1;
2 3 4 5 6 7 7 8 10 12
Ta được dãy đã sắp xếp:
Kết thúc.
Trang 176 Bài tập
10, 14, 15, 2, 8.
Áp dụng thuật toán trên để sắp xếp dãy trên giảm dần?
trình mà bạn biết để lập trình bài toán tổng quát đó?