Python 插入排序循环防护装置有什么问题

Python 插入排序循环防护装置有什么问题,python,Python,为什么9号还没有分类?我已经尝试过循环条件,但看不到错误: def insertionSort(L): n = len(L) for x in range(1,n): tgtNum = L[x] for y in range(x-1,-1,-1): if L[y] > tgtNum: L[y], L[x] = L[x], L[y] print(L)

为什么9号还没有分类?我已经尝试过循环条件,但看不到错误:

def insertionSort(L):
    n = len(L)
    for x in range(1,n):
        tgtNum = L[x]
        for y in range(x-1,-1,-1):
            if L[y] > tgtNum:
                L[y], L[x] = L[x], L[y]
            print(L)
        print()
    return(L)

myList = [2,9,1,7,5]
print(insertionSort(myList))

这是我的解决方案,你的第二个for循环就是你的问题

def insertionSort(L):
    n = len(L)
    for x in range(1,n):
        tgtNum = L[x]
        for y in range(0, x):
            if L[y] > tgtNum:
                temp = L[y]
                L[y] = L[x]
                L[x] = temp
            print(L)
        print()
    return(L)

myList = [2,9,1,7,5]
print(insertionSort(myList))

输出是:
[1,2,5,7,9]

这是我的解决方案,您的第二个for循环就是您的问题

def insertionSort(L):
    n = len(L)
    for x in range(1,n):
        tgtNum = L[x]
        for y in range(0, x):
            if L[y] > tgtNum:
                temp = L[y]
                L[y] = L[x]
                L[x] = temp
            print(L)
        print()
    return(L)

myList = [2,9,1,7,5]
print(insertionSort(myList))

输出是:
[1,2,5,7,9]

这是我的解决方案,您的第二个for循环就是您的问题

def insertionSort(L):
    n = len(L)
    for x in range(1,n):
        tgtNum = L[x]
        for y in range(0, x):
            if L[y] > tgtNum:
                temp = L[y]
                L[y] = L[x]
                L[x] = temp
            print(L)
        print()
    return(L)

myList = [2,9,1,7,5]
print(insertionSort(myList))

输出是:
[1,2,5,7,9]

这是我的解决方案,您的第二个for循环就是您的问题

def insertionSort(L):
    n = len(L)
    for x in range(1,n):
        tgtNum = L[x]
        for y in range(0, x):
            if L[y] > tgtNum:
                temp = L[y]
                L[y] = L[x]
                L[x] = temp
            print(L)
        print()
    return(L)

myList = [2,9,1,7,5]
print(insertionSort(myList))


输出是:
[1,2,5,7,9]

范围不应该是从0到n吗?实际上你没有什么错。在插入排序中,我们需要在数组中找到最小的数字,并用第一个替换它们。对吗?@sundarnatarajサンダーナタラジ 插入排序应该有一个已排序的分区,在本例中位于左侧。它在未排序的分区中从L到R循环-对于每个项目,它会返回到已排序的分区,并通过R到L循环寻找应该插入的点。范围不应该是从0到n吗?实际上,你没有做错什么。在插入排序中,我们需要在数组中找到最小的数字,并用第一个替换它们。对吗?@sundarnatarajサンダーナタラジ 插入排序应该有一个已排序的分区,在本例中位于左侧。它在未排序的分区中从L到R循环-对于每个项目,它会返回到已排序的分区,并通过R到L循环寻找应该插入的点。范围不应该是从0到n吗?实际上,你没有做错什么。在插入排序中,我们需要在数组中找到最小的数字,并用第一个替换它们。对吗?@sundarnatarajサンダーナタラジ 插入排序应该有一个已排序的分区,在本例中位于左侧。它在未排序的分区中从L到R循环-对于每个项目,它会返回到已排序的分区,并通过R到L循环寻找应该插入的点。范围不应该是从0到n吗?实际上,你没有做错什么。在插入排序中,我们需要在数组中找到最小的数字,并用第一个替换它们。对吗?@sundarnatarajサンダーナタラジ 插入排序应该有一个已排序的分区,在本例中位于左侧。它在未排序的分区中从L到R循环-对于每个项目,它会返回到已排序的分区,并通过R到L循环寻找它应该插入的点。+1感谢Dylan。为什么要使用temp?你不相信短版本吗?我认为它的记法很好,
L[y],L[x]=L[x],L[y]
是的,这是更好的记法,我想使用
temp
作为交换程序的一部分只是旧习惯:-)语句
tgtNum=L[x]
完全没有必要。是的,我知道,我只是保留了它,因为这是上面发布的原始代码中的内容。+1谢谢Dylan。为什么要使用temp?你不相信短版本吗?我认为它的记法很好,
L[y],L[x]=L[x],L[y]
是的,这是更好的记法,我想使用
temp
作为交换程序的一部分只是旧习惯:-)语句
tgtNum=L[x]
完全没有必要。是的,我知道,我只是保留了它,因为这是上面发布的原始代码中的内容。+1谢谢Dylan。为什么要使用temp?你不相信短版本吗?我认为它的记法很好,
L[y],L[x]=L[x],L[y]
是的,这是更好的记法,我想使用
temp
作为交换程序的一部分只是旧习惯:-)语句
tgtNum=L[x]
完全没有必要。是的,我知道,我只是保留了它,因为这是上面发布的原始代码中的内容。+1谢谢Dylan。为什么要使用temp?你不相信短版本吗?我认为它是一个很好的符号,是的,这是一个更好的符号,我想在我的交换程序中使用
temp
只是一个老习惯:-)语句
tgtNum=L[x]
是完全没有必要的。是的,我知道,我只是保留了它,因为这是上面发布的原始代码。