鸡尾酒排序,听名字真给力,原来还有这样的排序(其实我第一次听说的时候也感觉到很特别);

那么什么是“鸡尾酒排序”呢??

说白了,它就是在以前我们学习“冒泡排序”升级而来的,想一下“冒泡排序”,那时我们选中一端开始向另外一端进行“冒泡”,那么这个“鸡尾酒排序”其实就是往两端“冒泡”,这样说大体是不是能明白呢!我想大家应该差不多都可以啊,那么看看下面的图示你会更有心得:

因为图片大于500k,只能以附件的形式

http://down.51cto.com/data/670041

  1. #include <stdio.h>
  2. #define true 1
  3. #define false 0
  4. void cocktail_sort(int *list, int list_length)
  5. {
  6. int bottom = 0,top = 0,swapped = true;
  7. int swap_temp = 0;
  8. int i;
  9. top = list_length - 1;
  10. while(swapped == true)
  11. {
  12. swapped = false;
  13. for(i = bottom; i < top; i++)
  14. {
  15. if(list[i] > list[i + 1])
  16. {
  17. swap_temp = list[i];
  18. list[i] = list[i+1];
  19. list[i+1] = swap_temp;
  20. swapped = true;
  21. }
  22. }
  23. top--;
  24. for(i = top; i > bottom; i--)
  25. {
  26. if(list[i] < list[i - 1])
  27. {
  28. swap_temp = list[i];
  29. list[i] = list[i-1];
  30. list[i-1] = swap_temp;
  31. swapped = true;
  32. }
  33. }
  34. bottom++;
  35. }
  36. }
  37. int main(int argc,char *argv[])
  38. {
  39. int p[]={23,21,2,3,61,3,26,27,62};
  40. int i;
  41. cocktail_sort(p,sizeof(p)/4);
  42. for(i=0;i<sizeof(p)/4;i++)
  43. {
  44. printf("%d ",p[i]);
  45. }
  46. printf("\n");
  47. return 0;
  48. }

运行结果:

转载于:https://blog.51cto.com/dong4716138/1124862

经典系列——鸡尾酒排序相关推荐

  1. 经典算法——鸡尾酒排序(冒泡算法改良)

    经典算法--鸡尾酒排序(冒泡算法改良) 文章分类:Java编程 搞开发的人都需要积累一些经典算法,以备不时之须.         搞开发也有好几年了,积累的一些算法一直没做过整理,这段时间无聊就把这些 ...

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

    经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 ...

  3. 经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】

    经典十大排序算法[Java版完整代码] 写在前面的话 十大排序算法对比 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 插入排序 希尔排序 计数排序 桶排序 基数排序 完整测试类 写在前面的话   ...

  4. 十大经典排序算法之鸡尾酒排序

    package test;public class 鸡尾酒排序 {//如果左边大于右边则交换void Swap(int a[],int i,int j) {int temp=a[i];a[i]=a[j ...

  5. 冒泡排序和鸡尾酒排序(改进的冒泡排序)

    冒泡排序 冒泡排序是最基本的排序算法,也是排序算法中的经典的算法,也是比较简单.容易理解的算法,而且还可以对其排序过程进行优化. 冒泡排序排序过程总是大数往前放,小数往后放,相当于气泡往上升,所以称作 ...

  6. 数据结构与算法(十六)冒泡排序和鸡尾酒排序

    冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,以将当前序列的最小值交换到当前序列最前端为一轮结束,需要(length-1)轮,感觉数据是一 ...

  7. python代码实现鸡尾酒排序(双向冒泡排序)

    python代码实现鸡尾酒排序(双向冒泡排序) 鸡尾酒排序是冒泡排序的一种变形.它与冒泡排序的不同之处在于排序时是以双向在序列中进行排序. 鸡尾酒排序的原理跟冒泡排序差不多,只不过冒泡排序每一轮的比较 ...

  8. java 鸡尾酒排序_冒泡排序及优化(Java实现)

    向大端冒泡 public class BubbleSort { public static > void sort(T[] arr) { for (int i = 0, len = arr.le ...

  9. java-数组排序--冒泡排序、鸡尾酒排序、地精排序

    冒泡排序 冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了 见图解 稳定性:稳定 时间复杂度:O(n2) 1 public ...

最新文章

  1. jeesite如何已生成数据的数据源_使用Jeesite进行二次开发
  2. 判断一颗二叉树是否是平衡二叉树
  3. mysql dba系统学习(2)了解mysql的源码目录及源文件
  4. oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码
  5. RabbitMq+Haproxy负载均衡
  6. Java ByteArrayInputStream reset()方法及示例
  7. HTML+CSS+JS实现love520爱心表白
  8. linux系统怎么删除打印机,解决LINUX ES3.0下想指定打印机和用户的删除打印作业的问题...
  9. 关于结构化伪类的案例
  10. oops 内核重启问题_OOPS面试问答
  11. 积分器-微分器-抽取器
  12. 进程中出现n多的conime.exe怎么办
  13. 汇编语言——偏移地址超过有效地址FFFFH
  14. 使用两个FBO互相绑定实现PS液化效果
  15. 面向对象:期待在正确的时间,遇见更好的你
  16. 68 个 Python 内置函数详解,初学者一定不要错过,建意收藏学习
  17. 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
  18. android手机微信输入蓝色字体,微信彩色昵称怎么制作?微信个性蓝色昵称设置图文教程与方法...
  19. ASK调制的matlab代码
  20. 查询计算机科学系的学生,查询“计算机系”学生的学号、姓名、学生所选课程名和成绩,正确的命令是( ..._考试资料网...

热门文章

  1. ejb2.1中ejbQL的缺点,权且作为笔记
  2. java获取属性工具类,Java中常用的工具类总结
  3. Rust vs Pandas 数据处理
  4. excel 置信区间 计算_如何用excel计算95%的置信区间?
  5. Oracle的学习路径与方法讨论
  6. 被问懵了,加密后的数据如何进行模糊查询?
  7. 用instsrv.exe+srvany.exe将应用程序安装为windows服务
  8. 【二维线段树】20150209测试 千石抚子的三维积木
  9. 那先比丘说法:用智慧回答不信佛的人
  10. ASIC--模拟版图工程师