我有一個給定的陣列對 T = [[a1,b1],[a2,b2],...,[an,bn]] 我想對它進行排序,以便元素 b1,b2,... ,bn 按升序排列,如果某些 bs 相等,則按降序排列“a”元素
示例:對于 [1,6],[2,3],[5,7],[5,6],[2,5] 結果應該是這樣的:[2,3],[2,5] ,[5,6],[1,6],[5,7]
問題是我不能使用任何內置函式、方法等。
一開始我想用兩次一些穩定的排序,但我也關心執行時間,沒有更快的方法嗎?
uj5u.com熱心網友回復:
實作任何簡單的排序演算法,如InsertionSort,但不是直接比較對,而是使用如下函式:
def less(p1, p2):
if p1[1] < p2[1]:
return True
elif p1[1] > p2[1]:
return False
else:
return p1[0] > p2[0]
如果串列大小很大,則使用相同的比較函式應用更快的演算法
因此,而不是類似的東西:
while j >=0 and key < T[j] :
你必須寫:
while j >=0 and less(key, T[j]):
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446427.html
