也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
public class Cocktail {
int[] list = {88,23,1,23,2,9,10};
void sort(){
int length = list.length;
boolean flag=true;
while(flag){
flag=false;
for(int i = 0 ; i < length-1;i++){ //从低处往高处比较
if(list[i]>list[i+1]){
int temp = list[i];
list[i] = list[i+1];
list[i+1]= temp;
flag = true;
}
}
length--;
for(int i = length-1; i > 0; i--){ //从高处往低处比较
if(list[i]<list[i+1]){
int temp = list[i];
list[i] = list[i-1];
list[i-1]= temp;
flag = true;
}
}
}
}
void print(){
for(int i = 0 ; i < list.length ;i++){
System.out.println(list[i]);
}
}
public static void main(String[] args) {
Cocktail c = new Cocktail();
c.sort();
c.print();
}
}
鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。
以序列(2,3,4,5,1)为例,鸡尾酒排序只需要访问一次序列就可以完成排序,但如果使用冒泡排序则需要四次。
复杂度
鸡尾酒排序最糟或是平均所花费的次数都是O(n2),但如果序列在一开始已经大部分排序过的话,会接近O(n)。
分享到:
相关推荐
易语言鸡尾酒排序源码,鸡尾酒排序,子程序_鸡尾酒排序
易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾...
c++鸡尾酒排序算法
算法-理论基础- 排序- 鸡尾酒排序(包含源程序).rar
主要介绍了java交换排序之鸡尾酒排序实现方法,实例分析了排序的原理与相关的实现技巧,需要的朋友可以参考下
易语言鸡尾酒排序源码
简单的十大排序,c++代码实现,堆,冒泡,快速,计数,基数,归并,简单排序等
改进的冒泡排序,对排序的数组进行双向冒泡排序,又称为鸡尾酒排序
自己动手写的数据结构算法,希望能帮到大家。几乎每一句都有注释
排序算法再就业面试中经常被问到,这里提供一些排序算法的总结。
鸡尾酒排序(Cocktail Shaker Sort) 梳排序(Comb Sort) 计数排序(Counting Sort) 循环排序(Cycle Sort) 双重排序(Double Sort) 荷兰国旗排序(Dutch National Flag Sort) 交换排序(Exchange Sort) 外部...
经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - 地精排序Gnome Sort 经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳...
鸡尾酒排序(双向冒泡排序)CockTailSort(int *array, int length) 或 BiDirectionalSort(int *array, int length) 3.快速排序 QuickSort(int *array, int length) 归并排序(MergeSort.h) 1.归并排序 MergeSort...
常用排序算法总结,包含:冒泡排序、鸡尾酒排序、选择排序、插入排序、二分插入排序、希尔排序、归并排序、堆排序、快速排序等排序算法总结。
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一...
用c#语言重写的基本排序算法,里面包含冒泡排序,鸡尾酒排序(双向冒泡),选择排序,插入排序,希尔排序,堆排序,归并排序这几个排序算法。程序可以直接运行。
易语言排序算法演示源码,排序算法演示,初始化乱序,保存结果,默认排序,冒泡排序,插入排序,鸡尾酒排序,选择排序,双向选择排序,基数排序,鸽巢排序,快速排序,快速排序子程序
易语言排序动画演示源码,排序动画演示,数组模块_冒泡排序,数组模块_反转数组,数组模块_随机排列,数组模块_选择排序,数组模块_插入排序,数组模块_归并排序,子程序_有序数组合并,数组模块__鸡尾酒排序,数组模块_快速...
整合了常用的排序方法,全部是控制台程序,全部调试通过。真正C#版的。