本文主要是介绍python 冒泡排序优化版,冒泡之鸡尾酒排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思想:循环一个序列,比较两个相邻的元素,当第一个元素大于第二个元素时,交换两个元素的位置,直到循环到最后一个元素为止;
优化版冒泡排序:
def optimization_bubble(collection):for i in range(len(collection)):flag = Falsefor j in range(len(collection) - i - 1):if collection[j] > collection[j+1]:collection[j + 1],collection[j] = collection[j],collection[j + 1]flag = Trueif not flag:return collectionreturn collection
优化的地方在于减少循环次数,当排序列表在第二层循环中没有符合条件,就意味着目前的列表已经是排好顺序了,直接返回当前列表就可以了,优化前的冒泡排序则会一层层执行下去,直至第一层循环结束,附上优化前的冒泡排序代码供参考;
原始冒泡排序:
def bubble_sort(collection):for i in range(len(collection)):for j in range(len(collection) - i -1):if collection[j] > collection[j + 1]:collection[j+1],collection[j] = collection[j],collection[j+1]return collection
冒泡排序的最优版本又称鸡尾酒排序,也叫双向冒泡排序等等,这是冒泡排序的一种变体,不同之处在于,冒泡排序从低到高序列里的每个元素排序,而鸡尾酒排序从两个方向(低到高,高到底)来回排序,效率更高,代码展示:
def cocktail_shaker_sort(sorted_list):for i in range(len(sorted_list) - 1, 0, -1):swapped = Falsefor j in range(i, 0, -1):if sorted_list[j] < sorted_list[j - 1]:sorted_list[j], sorted_list[j - 1] = sorted_list[j - 1], sorted_list[j]swapped = Truefor j in range(i):if sorted_list[j] > sorted_list[j + 1]:sorted_list[j], sorted_list[j + 1] = sorted_list[j + 1], sorted_list[j]swapped = Trueif not swapped:return sorted_list
这篇关于python 冒泡排序优化版,冒泡之鸡尾酒排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!