如何在 Python 中计算冒泡排序中的交换次数
How to count number of swaps in Bubble Sort in Python
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。
掉期的正确计数:
我认为交换计数正常。
提示:将您的 print(numList)
放在 print(swapNumber)
之后或之前,在相同的缩进级别(在 if
中),您将看到所有步骤。
如果您查看控制台中打印的内容(函数本身的打印说明),它是匹配的。
Return最后的值为0
自从你上次 print(bubSort(numValues))
打印 0
而不是 15
之后确实有些奇怪(你可以在历史中看到!)
问题是你调用了两次函数
bubSort(numList)
print(numList)
print(bubSort(numList))
第二次,列表已经排序,所以没有发生交换!
您想保留 第一次 调用函数时的值:
numberOfSwaps = bubSort(numList)
print(numList)
print(numberOfSwaps)
您的 bubSort 函数正在 returning 值,它是正确的。
问题是,您在同一个数组上两次调用 bubSort 函数,并且由于第一个数组已经对数组进行了排序,所以当您打印(bubSort(numList))时它 returns 0.
删除或注释第一个 bubsort(numList) 函数,然后检查,它会 return 你 15,交换次数。
numList = [7,9,3,1,5,3,2]
# bubSort(numList)
print(numList)
print(bubSort(numList))
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。
掉期的正确计数:
我认为交换计数正常。
提示:将您的 print(numList)
放在 print(swapNumber)
之后或之前,在相同的缩进级别(在 if
中),您将看到所有步骤。
如果您查看控制台中打印的内容(函数本身的打印说明),它是匹配的。
Return最后的值为0
自从你上次 print(bubSort(numValues))
打印 0
而不是 15
之后确实有些奇怪(你可以在历史中看到!)
问题是你调用了两次函数
bubSort(numList)
print(numList)
print(bubSort(numList))
第二次,列表已经排序,所以没有发生交换!
您想保留 第一次 调用函数时的值:
numberOfSwaps = bubSort(numList)
print(numList)
print(numberOfSwaps)
您的 bubSort 函数正在 returning 值,它是正确的。 问题是,您在同一个数组上两次调用 bubSort 函数,并且由于第一个数组已经对数组进行了排序,所以当您打印(bubSort(numList))时它 returns 0.
删除或注释第一个 bubsort(numList) 函数,然后检查,它会 return 你 15,交换次数。
numList = [7,9,3,1,5,3,2]
# bubSort(numList)
print(numList)
print(bubSort(numList))