如何解决如何在Python中的冒泡排序中计算掉期次数
def bubSort(numList):
swapNumber = 0
for valNum in range(len(numList)-1,-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,2]
bubSort(numList)
print(numList)
print(bubSort(numList))
我尝试计算掉期的次数,但是我认为它没有用。在执行过程中它的读数为15,但我认为是10。
由于某些原因,swapNumber的值也不返回,它显示为0。
解决方法
正确的掉期计数:
我认为掉期的数量是正确的。
提示:将GreaterThanZero =
CALCULATE (
[ABS Production Chg],FILTER ( 'IXMBalanceSheet',VAR __temp = [ABS Production Chg] RETURN __temp > 0 )
)
放在print(numList)
之前或之后,以相同的缩进级别(在print(swapNumber)
中),您将看到所有步骤。
如果您查看控制台中打印的内容(该功能本身的打印说明),则它们匹配。
最后返回0值
实际上,自您上次打印if
而不是print(bubSort(numValues))
以来,0
....(您可以在历史记录中看到!)
问题是您两次调用了函数
15
第二次,该列表已经已排序,因此不会发生交换!
您想在第一次调用该函数时保留的值:
bubSort(numList)
print(numList)
print(bubSort(numList))
,
您的bubSort函数返回的值是正确的。 问题在于,您在同一数组上调用了bubSort函数两次,并且由于第一个数组已经对数组进行了排序,因此当您打印(bubSort(numList))时,它将返回0。
删除或注释第一个bubsort(numList)函数,然后检查,它将返回15,即没有交换。
numList = [7,9,3,1,5,2]
# bubSort(numList)
print(numList)
print(bubSort(numList))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。