我真的需要你的帮助,我正在学习排序算法,我试图制作一个Insertionsort算法。那么请你告诉我这是否是一个Insertionsort算法?
def insertsort(l):
for k in range(len(l)):
for i in range(1,len(l)):
if l[i]<l[i-1]:
while l[i]<l[i-1]:
l.insert(i-1,l.pop(i))
return l
答案 0 :(得分:0)
是的,它是插入排序。伪代码如下:
1. for j = 2 to n
2. key ← A [j]
3. // Insert A[j] into the sorted sequence A[1..j-1]
4. j ← i – 1
5. while i > 0 and A[i] > key
6. A[i+1] ← A[i]
7. i ← i – 1
8. A[j+1] ← key
答案 1 :(得分:0)
我不这么认为。您使用了两个嵌套的用于循环和一个用于。在@dreadedHarvester提供的伪代码和RosettaCode中提供的实现中,只使用一个用于循环,一个用于。
def insertion_sort(l):
for i in xrange(1, len(l)):
j = i-1
key = l[i]
while (l[j] > key) and (j >= 0):
l[j+1] = l[j]
j -= 1
l[j+1] = key