是Insertionsort吗?

时间:2016-09-07 17:16:29

标签: python algorithm sorting

我真的需要你的帮助,我正在学习排序算法,我试图制作一个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

2 个答案:

答案 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