繁体   English   中英

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

[英]Why my Bubble Sort code isn´t working properly?

我正在编写一个简单的冒泡排序脚本。 我已经尝试了几个测试用例,但其中一些没有按预期对数字进行排序。 这是我的代码,其中包含一个不起作用的测试用例。

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]

我找不到代码上的错误,尽管我认为是在迭代的数量和逻辑上。 希望可以有人帮帮我。

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

我不明白为什么您的循环在 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]

在这些代码之后,您需要初始化(创建)您的数组,然后像这样调用您的 def; bubbleSort(arr)所有这些事情之后,你可以在for循环打印您阵列。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM