Được gửi bởi
fingtogo
@Ql: Bạn có thể nói rõ hơn không, hay là bạn đưa ra một test nhỏ là rõ ý nhất!
QL cũng mới chỉ có ý tưởng chứ chưa có thuật toán. Nói rõ hơn như thế này:
Ví dụ. Gọi A(0) là giá trị ban đầu (chưa sắp thứ tự) của mảng, A(7) là giá trị cuối cùng (đã sắp thứ tự) của mảng.
Code:
A(7): 0 1 2 3 4 5 6 7 8 9
A(0): 2 9 3 4 6 5 7 8 0 1
Ta thấy A(0) thực chất là một hoán vị có 3 chu trình:
5 -> 5
(5 biến thành 5)
1 -> 9 -> 1
(1 biến thành 9, 9 biến thành 1)
0 -> 2 -> 3 -> 4 -> 6 -> 7 -> 8 -> 0
(0 biến thành 2, 2 biến thành 3,..., 8 biến thành 0)
Chu trình thứ nhất có độ dài 1 và được thực hiện mà không cần hoán vị cặp phần tử nào. Chu trình thứ hai có độ dài 2 và được thực hiện bằng 1 hoán vị cặp phần tử (1 và 9). Chu trình thứ ba có độ dài 7 và được thực hiện bằng 6 hoán vị cặp phần tử. Tổng cộng ta cần 0 + 1 + 6 = 7 hoán vị cặp phần tử để dựng được A(0) từ A(7), hay dựng A(7) từ A(0).
Bookmarks