def bubSort(numList):
swapNumber = 0
for valNum in range(len(numList)-1, 0, -1):
for valNum2 in range(valNum):
if numList[valNum2+1] < numList[valNum2]:
placeholder = numList[valNum2]
numList[valNum2] = numList[valNum2 + 1]
numList[valNum2 + 1] = placeholder
swapNumber+=1
print(swapNumber)
print(numList)
return swapNumber
numList = [7,9,3,1,5,3,2]
bubSort(numList)
print(numList)
print(bubSort(numList))
我试着数了数掉期的数量,但我认为它不起作用。在执行死刑时,它的读数是15,但我认为是10。
此外,swapNumber的值由于某种原因没有返回,它显示为0。
正确的Swaps计数:
我认为掉期的计算是正确的。
提示:将print(numList)
放在print(swapNumber)
之后或之前,处于相同的缩进级别(在if
中(,您将看到所有步骤。
如果您查看控制台中打印的内容(函数本身的打印说明(,它是匹配的。
末尾返回0的值
事实上,自从你上一次print(bubSort(numValues))
打印0
以来,有一些奇怪的事情。。。。而不是15
(你可以在历史中看到!(
问题是你调用函数两次
bubSort(numList)
print(numList)
print(bubSort(numList))
第二次,列表已经排序,因此不会发生交换!
您想保留第一次调用函数时的值:
numberOfSwaps = bubSort(numList)
print(numList)
print(numberOfSwaps)
您的bubSort函数正在返回正确的值。问题是,您在同一个数组上调用bubSort函数两次,由于第一个数组已经对数组进行了排序,所以当您打印(bubSort(numList((时,它会返回0。
删除或注释第一个bubsort(numList(函数,然后进行检查,它将返回15,即交换数量。
numList = [7,9,3,1,5,3,2]
# bubSort(numList)
print(numList)
print(bubSort(numList))