Sắp xếp mảng {1, 2, 3, ..., N}
song song với mảng nhất định. Vì vậy, trong ví dụ của bạn, {3, 2, 6, 4}
sẽ được sắp xếp, với mỗi lần hoán đổi ảnh hưởng đến mảng đó và mảng {1, 2, 3, 4}
. Kết quả cuối cùng sẽ là {2, 3, 4, 6}
cho mảng đầu tiên và {2, 1, 4, 3}
cho mảng thứ hai; mảng thứ hai là câu trả lời cho câu hỏi của bạn.
Trong trường hợp đó không phải là rõ ràng, đây là một ví dụ nữa:
5 2 1 4 3
1 2 3 4 5
2 5 1 4 3
2 1 3 4 5
2 1 5 4 3
2 3 1 4 5
2 1 4 5 3
2 3 4 1 5
2 1 4 3 5
2 3 4 5 1
2 1 3 4 5
2 3 5 4 1
1 2 3 4 5
3 2 5 4 1
tôi đã sử dụng bong bóng sắp xếp :-) để sắp xếp hàng đầu tiên, và chỉ cần hoán đổi hàng dưới cùng song song với dòng đầu tiên. Nhưng ý tưởng nên làm việc với bất kỳ phương pháp phân loại nào: chỉ cần thao tác hàng dưới cùng song song với các thao tác (hoán đổi hoặc bất kỳ thứ gì) mà bạn đang thực hiện ở hàng trên cùng.
Nguồn
2015-06-11 04:59:41
gì ngôn ngữ mà bạn đang sử dụng? –
C++ và chúng tôi có 10^9 số, chúng tôi có thể giả định những số này là riêng biệt – ysyugeee
Tôi nghĩ bạn sẽ có thể chỉnh sửa [Đếm loại] (https://en.wikipedia.org/wiki/Counting_sort) một chút để chỉ cần trả lại cho những người đó;) – Carsten