python - 使用冒泡排序
问题描述
我想创建一个使用冒泡排序技术对数组进行排序的程序,但只发生第一次迭代。我需要帮助理解为什么会这样。
a=[10,4,5,2,0,6]
def srt(element):
element1=element[:]
element2=element[:]
idx=1
for x in element:
for y in element2[idx:]:
if x>y:
element1[idx]=x
element1[idx-1]=y
print(element1)
idx+=1
else:
pass
我想显示排序的所有步骤
解决方案
您的代码在语义上是错误的。你不是在比较相邻的元素。
你的代码...
for x in element:
for y in element2[idx:]:
if x>y:
将列表的第一个元素与列表中从 idx 开始的所有其他元素进行比较。
冒泡排序通过比较相邻元素并在每次遍历时将最大/最小元素“冒泡”到列表末尾来工作。
在 interactivepython.org 上找到的这段代码通过从列表的开头迭代到(len of list) - (number of iterations)
第一次传递,它将最大的元素冒泡到列表的末尾。在第二次通过时,它将第二大元素冒泡到列表中倒数第二个位置......依此类推。
def bubbleSort(alist):
for passnum in range(len(alist)-1,0,-1):
for i in range(passnum):
if alist[i]>alist[i+1]:
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBubbleSort.html
推荐阅读
- moodle - 无法检索外部页面的用户 ID(moodle)
- azure - Azure Bot 返回“加载资源失败:服务器响应状态为 502(错误网关)”错误
- visual-studio - Visual Studio 2017 告诉我现在每次打开 IDE 时都可以使用 Visual Studio 2019 版本
- vba - 使用 VBA PowerPoint 引用幻灯片的字幕以进行格式化
- python - lib/pythonX.Y/no-global-site-packages.txt 的路径
- go - Go 包函数中的模拟函数
- android - 验证者 GSON 类型适配器
- r-markdown - bookdown 中不同引文包的问题
- amazon-web-services - 如何让现有用户成为 AWS Redshift 中的超级用户
- html - 当视口太长时,文本在跨度中重叠