Cho một list, nhiệm vụ sắp xếp list theo phần tử thứ hai trong sublist. Ở đây áp dụng bubble sort đơn giản.
Ví dụ
Input [['CCC', 15], ['AAA', 10], ['RRRR', 2],['XXXX', 150]] Output [['RRRR', 2], ['AAA', 10], ['CCC', 15], ['XXXX', 150]]
Thuật toán
Bước 1: Cho một list. Bước 2: Truy cập phần tử thứ hai của sublist bằng vòng lặp lồng. Bước 3: Duyệt qua tất cả phần tử mảng. Bước 4: i phần tử cuối đã ở đúng vị trí. Bước 5: Duyệt mảng từ 0 đến n-i-1. Bước 6: Hoán đổi nếu phần tử hiện tại lớn hơn phần tử tiếp theo.
Ví dụ mã
# Chương trình Python sắp xếp list theo phần tử thứ hai của sublist
# Cách sắp xếp in-place, dùng biến thứ ba.
def sortlist(A):
l = len(A)
for i in range(0, l):
for j in range(0, l-i-1):
if (A[j][1] > A[j + 1][1]):
tempo = A[j]
A[j] = A[j + 1]
A[j + 1] = tempo
return A
# Driver Code
A = [['AAA', 10], ['CCC', 15], ['RRRR', 2], ['XXXX', 150]]
print(sortlist(A))
Kết quả
[['RRRR', 2], ['AAA', 10], ['CCC', 15], ['XXXX', 150]]