为什么我的冒泡排序代码不能正常工作?

2024-05-29 10:54:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个简单的冒泡排序脚本。我已经尝试了几个测试用例,但其中一些没有按预期的顺序排列。下面是我的代码,其中有一个测试用例不起作用

def bubble_sort(array):

    i = 0
    j = 1

    for x in range(0, len(array)):

        for y in range(1000):

            if(i == 4 and j == 5):

                i, j = 0, 1

            if(array[i] <= array[j]):

                pass

            if(array[i] > array[j]):

                array[i], array[j] = array[j], array[i]

            #print(array)

            i, j = i + 1, j + 1

            pass

        pass

    return(array)   

我正在将此列表传递给代码

[7, 3, 1, 2, 3, 3, 10, 15, 2]

输出是

[1, 2, 3, 3, 7, 3, 10, 15, 2]

我找不到代码上的错误,尽管我认为是迭代次数和逻辑上的错误。 希望有人能帮助我


Tags: and代码in脚本forlenifdef
2条回答

这只是您的代码的固定版本:

我不明白为什么您的循环在for循环中使用xy作为枚举值,但随后您使用另一对索引:ij。似乎不需要ij

if(i == 4 and j == 5)-不需要。这仅仅是一件调试的事情吗

pass只是个禁忌。我认为你不需要它

它的拼写是bubble,而不是buble

它变得非常简单:

def bubble_sort(array):
    for x in range(0, len(array)):
        for y in range(x+1, len(array)):
            if(array[x] > array[y]):
                array[x], array[y] = array[y], array[x]
    return(array)

这是您的代码的不同版本

def bubbleSort(arr):
    n = len(arr)
    for i in range(n):

        for j in range(0, n-i-1):

            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]

在这些代码之后,您需要初始化(创建)数组,然后像这样调用defbubbleSort(arr)完成所有这些之后,您可以在for循环中打印数组

for i in range(len(arr)):
    print(arr[i])

相关问题 更多 >

    热门问题