算法----(2)鸡尾酒排序

鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进。此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能。

python代码:

 1 def bubble_sort_pro(num_array):
 2     flag = True
 3     for i in range(len(num_array)//2):
 4         if flag:
 5             flag = False
 6             #将最大值排到队尾
 7             for j in range(i, len(num_array)-i-1):
 8                 if num_array[j]>num_array[j+1]:
 9                     num_array[j], num_array[j+1] = num_array[j+1], num_array[j]
10                     flag = True
11             #将最小值排到队首
12             for j in range(len(num_array)-1-i, i, -1):
13                 if num_array[j] < num_array[j-1]:
14                     num_array[j], num_array[j-1] = num_array[j-1], num_array[j]
15                     flag = True
16         else:
17             break
18
19
20 def main():
21     a = [6, 5, 3, 1, 8, 7, 2, 4]
22
23     bubble_sort_pro(a)
24     for i in range(len(a)):
25         print(a[i])
26
27
28 if __name__ == ‘__main__‘:
29     main()

原文地址:https://www.cnblogs.com/MC-Curry/p/9347944.html

时间: 2024-10-14 16:00:42

算法----(2)鸡尾酒排序的相关文章

排序算法之鸡尾酒排序

昨天中午北京温度为40度,在中午12:16分我来到篮球场,思考了1分钟决定开站 转球: 我和另外3名队友开始半场, 球传到我手的刹那顿时烫的我持球不稳,顿时问道了淡淡的胶皮味道和烤肉味道的混搭. 这时我来了一个腾空跳投, 球---------爆炸了........ 听新闻说昨天在路上都是 "熟人" 一位老大爷不慎被车刮倒了,大爷二话没说立马爬了起来,围观众人议论纷纷: "大爷人不错","大爷素质真高","大爷身体可真好" 大爷

Hark的数据结构与算法练习之鸡尾酒排序

算法说明 鸡尾酒排序又叫定向冒泡排序,鸡尾酒搅拌排序,搅拌排序,涟漪排序,回来排序,快乐小时排序. 鸡尾酒排序是交换排序的一种,它是冒泡排序的一个轻微的变种.冒泡是从低向高比较排序,鸡尾酒从低向高,从高向低交换着进行排序.大家看一下代码就知道了. 某些特殊有序数组情况下,鸡尾酒排序是效率略好于冒泡排序,例如: int[] arrayData = { 2, 3, 4, 5, 6, 7, 8, 9, 1 }; 鸡尾酒排序只排序一次就能出结果,而冒泡排序就需要8次才能出结果. 代码 使用的是java

数据结构——排序——鸡尾酒排序算法

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 是冒泡排序的一种变形.此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序. 使用鸡尾酒排序为一列数字进行排序的过程 鸡尾酒算法原理 i. 先对数组从左到右进行升序的冒泡排序:  ii. 再对数组进行从右到左的降序的冒泡排序:  iii. 以此类推,持续的.依次的改变冒泡的方向,并不断缩小没有排序的数组范围: 例:         88     7     79     64     55     98     48     52    

经典算法题每日演练——第二十三题 鸡尾酒排序

原文:经典算法题每日演练--第二十三题 鸡尾酒排序 这篇我们继续扯淡一下鸡尾酒排序,为了知道为啥取名为鸡尾酒,特意看了下百科,见框框的话,也只能勉强这么说了. 要是文艺点的话,可以说是搅拌排序,通俗易懂点的话,就叫“双向冒泡排序”,我想作为码农的话,不可能不知道冒泡排序, 冒泡是一个单向的从小到大或者从大到小的交换排序,而鸡尾酒排序是双向的,从一端进行从小到大排序,从另一端进行从大 到小排序. 从图中可以看到,第一次正向比较,我们找到了最大值9. 第一次反向比较,我们找到了最小值1. 第二次正向

经典排序算法 - 鸡尾酒排序Cocktail sort

经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1交换 [2 3 4 1 5] 第一趟回来时的第一步,鸡尾酒一次到头后就回返回来,再到头后再过去,来回比,一个来回能排两个数字 第五步迭代,1 &l

排序算法总结——冒泡排序与鸡尾酒排序

1. 冒泡排序 冒泡排序(bubble sort),是一种基础的交换排序.基本思想是,把相邻的元素两辆进行比较,当一个元素大于右侧相邻元素时,交换它们的位置:当一个元素小于或等于右侧相邻元素时,位置不变. 冒泡排序是一种稳定排序,值相等的元素并不会打乱原本的顺序.由于该排序算法每一轮都要遍历所有元素,总共遍历(元素数量-1)轮,平均时间复杂度为O(n2). 升级版1: 对于序列的后半部分已经是有序的情况,如果能判断出有序,并作出标记,那么剩下的几轮排序就不必执行了.利用bool变量isSorte

js鸡尾酒排序算法

// 鸡尾酒排序算法 function wineSort(arr) { console.log('鸡尾酒算法第0次:' + arr.join(',')); let len = arr.length; for (let i = 0; i < len / 2; i++) { // 奇数次 let isSort = true; for (let j = i; j < len - 1 - i; j++) { if (arr[j + 1] < arr[j]) { let temp = arr[j

排序高级之交换排序_鸡尾酒排序

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形.此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序. 与冒泡排序不同的地方: 鸡尾酒排序等于是冒泡排序的轻微变形.不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素.他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目. 以序列(2,3,4,

冒泡排序的改进:鸡尾酒排序

鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进.此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较列里的每个元素. 它可以得到比冒泡排序稍微好一点的排序. void CocktailSort(int *a , int n){ int left = 0; int right = n - 1; while(left < right) { for(int i = left; i < right; i++) { if(a[i] > a[i+1]) swap(a,i