Đưa ra một danh sách các chỉ số và không hoặc nhiều danh sách số nguyên, xuất ra danh sách các số nguyên, được sắp xếp theo thứ tự tăng dần, với mức độ ưu tiên chính từ đầu vào đầu tiên.
Thí dụ
Đặt các phím nhập là [1, 0, 2]
và đầu vào danh sách [[5, 3, 4], [6, 2, 1], [5, 2, 1]]
. Các danh sách đó cần được sắp xếp theo phần tử thứ hai của chúng, rồi phần tử đầu tiên, rồi phần tử thứ ba, theo thứ tự tăng dần:
- Đầu tiên, chúng tôi sắp xếp theo các giá trị tại chỉ mục
1
:[[6, 2, 1], [5, 2, 1], [5, 3, 4]]
- Tiếp theo, chúng tôi phá vỡ mọi mối quan hệ từ loại đầu tiên bằng cách sử dụng các giá trị tại chỉ mục
0
:[[5, 2, 1], [6, 2, 1], [5, 3, 4]]
- Cuối cùng, chúng tôi phá vỡ mọi mối quan hệ còn lại với các vlues tại chỉ mục
2
(điều này thực sự không thay đổi bất cứ điều gì, vì không còn mối quan hệ nào nữa).
Chi tiết
- Sắp xếp ổn định: nếu hai phần tử so sánh bằng với các khóa sắp xếp đã cho, chúng phải giữ cùng thứ tự tương đối trong đầu ra. Ví dụ, nếu
A
vàB
bằng nhau dưới các khóa sắp xếp đã cho, và đầu vào là[..., A, ..., B, ...]
,A
phải được đặt trướcB
trong đầu ra. - Khóa sắp xếp sẽ không bao giờ tham chiếu phần tử không tồn tại trong một trong các danh sách đầu vào.
- Không có phím sắp xếp sẽ được lặp lại. Vì vậy,
[1, 2, 1]
không phải là một danh sách hợp lệ của các khóa sắp xếp. - Bất kỳ yếu tố nào không được tham chiếu bởi các phím sắp xếp không tham gia vào thứ tự sắp xếp. Chỉ thứ tự tương đối ban đầu và các giá trị của các phần tử được tham chiếu bởi các khóa sắp xếp xác định thứ tự đầu ra.
- Bạn có thể chọn các khóa sắp xếp là không có chỉ mục hoặc chỉ mục một.
- Sẽ không có giá trị âm trong các phím sắp xếp. Nếu bạn chọn sử dụng lập chỉ mục một, sẽ không có số 0 trong các phím sắp xếp.
- Giá trị số nguyên sẽ không vượt quá phạm vi có thể biểu thị bằng ngôn ngữ của bạn. Nếu ngôn ngữ được chọn của bạn có khả năng tự nhiên là các số nguyên chính xác tùy ý (như Python), thì bất kỳ giá trị số nguyên nào cũng có thể xuất hiện trong đầu vào, tùy thuộc vào các ràng buộc bộ nhớ.
Tham chiếu thực hiện (Python 2)
#!/usr/bin/env python
keys = input()
lists = input()
print sorted(lists, key=lambda l:[l[x] for x in keys])
Các trường hợp thử nghiệm
Định dạng : keys lists -> output
. Tất cả các khóa sắp xếp là không có chỉ mục.
[1, 0, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[5, 2, 1], [6, 2, 1], [5, 3, 4]]
[1, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[6, 2, 1], [5, 2, 1], [5, 3, 4]]
[0, 1] [[1, 2], [2, 1]] -> [[1, 2], [2, 1]]
[1, 0] [[1, 2], [2, 1]] -> [[2, 1], [1, 2]]
[0] [[4], [10, 11, -88], [-2, 7]] -> [[-2, 7], [4], [10, 11, -88]]
[2] [[-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6]] -> [[-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2]]
[2, 1] [[9, 2, -2, -10, -6], [3, -4, -2]] -> [[3, -4, -2], [9, 2, -2, -10, -6]]
[2, 4, 8] [[5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5], [-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3]] -> [[-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3], [5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5]]
[1, 2, 3, 4, 5] [[-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [5, 3, -6, -5, -4, -4, -8, 2], [9, -4, 1, -1, -3, -2], [-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [1, -5, -3, -10, -7, 9, -8, -5, -1], [-9, 4, -1, -1, 2, 4]] -> [[-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -5, -3, -10, -7, 9, -8, -5, -1], [9, -4, 1, -1, -3, -2], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [5, 3, -6, -5, -4, -4, -8, 2], [-9, 4, -1, -1, 2, 4]]
[8, 7, 3, 2, 4, 9, 1] [[8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9]] -> [[10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5]]