python – 冒泡排序已排序列表

python – 冒泡排序已排序列表,第1张

概述如果传递已经订购的列表(或者已经通过冒泡排序中途订购),我想停止运行冒泡排序功能 我已将冒泡排序功能定义为 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]>va 如果传递已经订购的列表(或者已经通过冒泡排序中途订购),我想停止运行冒泡排序功能

我已将冒泡排序功能定义为

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+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+1)            flag = True    return flagdef 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,3,10]>>> bubble_sort(test)0>>> test[1,10]>>>
总结

以上是内存溢出为你收集整理的python – 冒泡排序已排序列表全部内容,希望文章能够帮你解决python – 冒泡排序已排序列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1197547.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存