0
這是我在Cormen,Leiserson,Rivest書中描述的插入排序的實現。唯一的區別是我正在使用inner for循環而不是while循環。我覺得它有點笨重。我怎樣才能簡化這個?如何改進插入排序例程?
def isort(list):
if len(list) <= 1:
return list
# pick the next item for insertion from LEFT to RIGHT
for j in range(1, len(list)):
current = list[j]
# invariant: [0:j-1] is sorted
# range(0,j) returns everything up j-1
# Pick the next item to compare from RIGHT TO LEFT
ip = j-1
inorder = False
moved = False
for i in reversed(range(0,j)):
ip = i
if list[i] > current:
# move it to the right
list[i+1] = list[i]
moved = True
else:
inorder = True
break;
if moved:
if inorder:
list[ip+1] = current
else:
list[ip] = current
return list
「我怎麼能簡化這個?」調用列表中的`.sort()`。 – robert 2010-12-23 02:48:38
@robert OP顯然對理解插入排序算法感興趣,而不是對特定列表進行排序。 – mjv 2010-12-23 02:53:19