【发布时间】:2011-03-03 18:43:50
【问题描述】:
我使用以下算法进行插入排序:
def insertionSort(A):
indices = [z for z in xrange(len(A))]
for j in range(1, len(A)):
key = A[j]
i = j-1
while (i>=0) and (A[i]<key):
A[i+1] = A[i]
indices[j-i-1] = i+1
i = i-1
A[i+1] = key
但是,我需要维护一个列表来将 A 的原始值的索引映射到 A 的排序值,这意味着如果在排序列表后我有一个 [1,3,4,2] 列表 = [4,3,2,1] 我将有一个 [3,1,0,2] 的索引列表。
有什么建议吗?我有点卡住了。
已编辑:抱歉,按降序排序..
【问题讨论】:
-
您的代码反向排序,
[1,3,4,2]到[4, 3, 2, 1]... -
(1,0), (3,1), (4,2), (2,3) 按 t[0] 排序得到 (1,0), (2,3), (3,1), (4,2),所以索引列表应该是 [0,3,1,2]。
-
为什么每个人都弄错了?看起来已经够清楚了。它从原始位置映射到排序位置,而不是相反。
标签: python sorting insertion-sort