[英]How can this insertion sort routine be improved?
這是我對插入類型的實現,如Cormen,Leiserson和Rivest所述。 唯一的區別是,我使用的是內部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
for index, item in enumerate(list)
range(len(list)
做for index, item in enumerate(list)
而是for index, item in enumerate(list)
,在這種情況下,index將是您的索引,而item將是您要查看的項目的值。 順便說一句,弗蘭克·里貝里(Franck Ribery)是我最喜歡的足球運動員之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.