尝试用python模拟插入排序算法,为什么这样会有问题?

代码:

def InsertionSort(l): # 插入排序
    process = str(l)
    for j in range(1, len(l)):
        n = l.pop(j)
        for i in range(j):
            if l[j - i - 1] < n:
                l.insert(j - i, n)
                process += ("\n" + str(l))
                continue
            if l[0] > n:
                l.insert(0, n)
                process += ("\n" + str(l))
                continue
    return process


print(InsertionSort([3, 2, 5, 4, 1]))

输出结果:

[3, 2, 5, 4, 1]
[2, 3, 5, 4, 1]
[2, 3, 5, 4, 1]
[2, 5, 3, 5, 4, 1]
[2, 5, 3, 5, 4, 1]
[2, 5, 5, 3, 5, 4, 1]
[2, 5, 5, 3, 5, 4, 1]
[2, 5, 5, 5, 3, 5, 4, 1]

怎么看也没用看出错误啊,求解答


def InsertionSort(l): # 插入排序
    process = str(l)
    for j in range(1, len(l)):
        n = l[j]
        for i in range(j-1,-1,-1):
            if l[i] <= n:
                print("j: %s,i: %s, result:%s"%(j,i,str(l)))
                continue
            else:
                l[i],l[j]=n,l[i]
                n=l[i]
                print("j: %s,i: %s, result:%s"%(j,i,str(l)))
                 
    return process
 
 
print(InsertionSort([3, 2, 5, 4, 1]))

#这个是我手机敲的,有缩进问题还是原谅,大致思路就是这样的

插入排序,并不是让你就真正的执行insert,你这样做,列表的遍历就会有问题

楼上已经说完了,我只是吐个槽:
想实现什么算法,先看懂算法,再去实现,不要望文生义
就算你真的要执行insert,好歹同时得del一项吧,要不不越来越多?