
我已将冒泡排序功能定义为
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 – 冒泡排序已排序列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)