经典系列——鸡尾酒排序
鸡尾酒排序,听名字真给力,原来还有这样的排序(其实我第一次听说的时候也感觉到很特别);
那么什么是“鸡尾酒排序”呢??
说白了,它就是在以前我们学习“冒泡排序”升级而来的,想一下“冒泡排序”,那时我们选中一端开始向另外一端进行“冒泡”,那么这个“鸡尾酒排序”其实就是往两端“冒泡”,这样说大体是不是能明白呢!我想大家应该差不多都可以啊,那么看看下面的图示你会更有心得:
因为图片大于500k,只能以附件的形式
http://down.51cto.com/data/670041
- #include <stdio.h>
- #define true 1
- #define false 0
- void cocktail_sort(int *list, int list_length)
- {
- int bottom = 0,top = 0,swapped = true;
- int swap_temp = 0;
- int i;
- top = list_length - 1;
- while(swapped == true)
- {
- swapped = false;
- for(i = bottom; i < top; i++)
- {
- if(list[i] > list[i + 1])
- {
- swap_temp = list[i];
- list[i] = list[i+1];
- list[i+1] = swap_temp;
- swapped = true;
- }
- }
- top--;
- for(i = top; i > bottom; i--)
- {
- if(list[i] < list[i - 1])
- {
- swap_temp = list[i];
- list[i] = list[i-1];
- list[i-1] = swap_temp;
- swapped = true;
- }
- }
- bottom++;
- }
- }
- int main(int argc,char *argv[])
- {
- int p[]={23,21,2,3,61,3,26,27,62};
- int i;
- cocktail_sort(p,sizeof(p)/4);
- for(i=0;i<sizeof(p)/4;i++)
- {
- printf("%d ",p[i]);
- }
- printf("\n");
- return 0;
- }
运行结果:
转载于:https://blog.51cto.com/dong4716138/1124862
经典系列——鸡尾酒排序相关推荐
- 经典算法——鸡尾酒排序(冒泡算法改良)
经典算法--鸡尾酒排序(冒泡算法改良) 文章分类:Java编程 搞开发的人都需要积累一些经典算法,以备不时之须. 搞开发也有好几年了,积累的一些算法一直没做过整理,这段时间无聊就把这些 ...
- 经典排序算法 - 鸡尾酒排序Cocktail sort
经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 ...
- 经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】
经典十大排序算法[Java版完整代码] 写在前面的话 十大排序算法对比 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 插入排序 希尔排序 计数排序 桶排序 基数排序 完整测试类 写在前面的话 ...
- 十大经典排序算法之鸡尾酒排序
package test;public class 鸡尾酒排序 {//如果左边大于右边则交换void Swap(int a[],int i,int j) {int temp=a[i];a[i]=a[j ...
- 冒泡排序和鸡尾酒排序(改进的冒泡排序)
冒泡排序 冒泡排序是最基本的排序算法,也是排序算法中的经典的算法,也是比较简单.容易理解的算法,而且还可以对其排序过程进行优化. 冒泡排序排序过程总是大数往前放,小数往后放,相当于气泡往上升,所以称作 ...
- 数据结构与算法(十六)冒泡排序和鸡尾酒排序
冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,以将当前序列的最小值交换到当前序列最前端为一轮结束,需要(length-1)轮,感觉数据是一 ...
- python代码实现鸡尾酒排序(双向冒泡排序)
python代码实现鸡尾酒排序(双向冒泡排序) 鸡尾酒排序是冒泡排序的一种变形.它与冒泡排序的不同之处在于排序时是以双向在序列中进行排序. 鸡尾酒排序的原理跟冒泡排序差不多,只不过冒泡排序每一轮的比较 ...
- java 鸡尾酒排序_冒泡排序及优化(Java实现)
向大端冒泡 public class BubbleSort { public static > void sort(T[] arr) { for (int i = 0, len = arr.le ...
- java-数组排序--冒泡排序、鸡尾酒排序、地精排序
冒泡排序 冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了 见图解 稳定性:稳定 时间复杂度:O(n2) 1 public ...
最新文章
- jeesite如何已生成数据的数据源_使用Jeesite进行二次开发
- 判断一颗二叉树是否是平衡二叉树
- mysql dba系统学习(2)了解mysql的源码目录及源文件
- oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码
- RabbitMq+Haproxy负载均衡
- Java ByteArrayInputStream reset()方法及示例
- HTML+CSS+JS实现love520爱心表白
- linux系统怎么删除打印机,解决LINUX ES3.0下想指定打印机和用户的删除打印作业的问题...
- 关于结构化伪类的案例
- oops 内核重启问题_OOPS面试问答
- 积分器-微分器-抽取器
- 进程中出现n多的conime.exe怎么办
- 汇编语言——偏移地址超过有效地址FFFFH
- 使用两个FBO互相绑定实现PS液化效果
- 面向对象:期待在正确的时间,遇见更好的你
- 68 个 Python 内置函数详解,初学者一定不要错过,建意收藏学习
- 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
- android手机微信输入蓝色字体,微信彩色昵称怎么制作?微信个性蓝色昵称设置图文教程与方法...
- ASK调制的matlab代码
- 查询计算机科学系的学生,查询“计算机系”学生的学号、姓名、学生所选课程名和成绩,正确的命令是( ..._考试资料网...