首页 / 算法 / python – 冒泡排序已排序列表
python – 冒泡排序已排序列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 冒泡排序已排序列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1338字,纯文字阅读大概需要2分钟。
内容图文
如果传递已经订购的列表(或者已经通过冒泡排序中途订购),我想停止运行冒泡排序功能
我已将冒泡排序功能定义为
def swap(values,i,j):
values[i],values[j]=values[j],values[i]
def bubble(values):
for i in range (len(values)-1):
if values[i]>values[i+1]:
swap(values,i,i+1)
def bubble_sort(values):
count = 0
for i in range(len(values)-1):
count += 1
bubble(values)
return count
在这里,我计算我调用bubble函数的次数,以查看执行交换的次数.我想改变代码,以便如果给出一个已经排序的列表,bubble_sort()函数将停止调用bubble()函数.
我知道我将不得不在bubble函数中使用一个布尔值,如果有任何值被交换,则返回但是我不确定如何实际实现它.
解决方法:
正如Jorge在回答中所示,但是没有解释(如关闭喷射)在泡泡中放置一个默认为True或False的布尔变量,无论你选择什么,如果你进行交换并将结果返回到最后,则将其值更改为oposite,如果从bubble获得的值是您的默认值,则表示您的列表是否已订购,否则您必须继续调用该函数.然后你可以将main函数改为像这样的while循环
def bubble(values):
"return true if a swap was made, false otherwise"
flag = False
for i in range(len(values)-1):
if values[i]>values[i+1]:
swap(values,i,i+1)
flag = True
return flag
def bubble_sort(values):
count = 0
while bubble(values): # while there is a swap...
count += 1
return count
测试
>>> test=[1,9,4,7,2,8,10,5,6,3]
>>> bubble_sort(test)
7
>>> test
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> bubble_sort(test)
0
>>> test
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
内容总结
以上是互联网集市为您收集整理的python – 冒泡排序已排序列表全部内容,希望文章能够帮你解决python – 冒泡排序已排序列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。