python - 如何在 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
如果您查看控制台中打印的内容(函数本身的打印指令),它会匹配。
最后返回值0
确实,自从您上次print(bubSort(numValues))
打印以来,有些奇怪0
......而不是15
(您可以在历史上看到!)
问题是您两次调用该函数
bubSort(numList)
print(numList)
print(bubSort(numList))
第二次,列表已经排序,所以没有交换发生!
您想保留第一次调用函数时的值:
numberOfSwaps = bubSort(numList)
print(numList)
print(numberOfSwaps)
推荐阅读
- android - 在 ViewPager 中多次调用相同的片段
- wordpress - 如何在“我的帐户”页面上为特定用户角色添加 woocommerce 成功通知?
- docker - 使用 Docker 容器测试 Kerberos
- google-apps-script - 获取点击的绘图的行/列?
- enums - 如何在 Flowtype 中使用字符串值作为文字类型?
- excel - 如果工作表不存在,如何创建工作表?
- javascript - 如何在innerHTML 中设置onclick 事件?
- python - 第一列的熊猫总和
- c# - 绑定列表
从模型到视图模型 - python - 在文本文件的每一行末尾附加浮点数据