[英]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 循环中使用x
和y
作为枚举值,但随后您使用了另一对索引: i
和j
。 i
和j
似乎不需要。
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.