欢迎关注WX公众号:

鸡尾酒排序算法(java)

####文章链接

知识点

1、鸡尾酒排序算法介绍;
2、算法的实现java;

概述

鸡尾酒算法:就是把一组数字,分别向前和向后将每个最大(最小)的数字分别往前后推。每一次推的结果一定是,最大(最小)的一定会在最前或者最后。

算法实现


//示例入参数组; src = {5,2,4,1,3}
public int[] cocktail_sort(int[] src){long timeS = System.currentTimeMillis();//该算法是只需要向左或右推数组长度的一半次数就够了for (int i = 0; i < src.length / 2; i++){//第一个for循环是将数组中最大的数,向最后推。结果最大的数总会在最右边//例如上面的数组//第一次:5因为最大,所以在执行下面循环之后,一定位于数组最后面。(以此类推,第二次,是4最大,会位于5的前面)for (int j = i; j < src.length - i - 1; j++){if (src[j] > src[j + 1]){int temp = src[j];src[j] = src[j + 1];src[j + 1] = temp;}System.out.println("swap biggest number : " + Arrays.toString(src));}//第二个循环是将数组中最小的数,往最前面推。结果最小的数总会在最右边//例如上面的数组//第一次往右,1是最小,循环执行完毕后,1一定位于数组最前面。(类似地,第二次就会把第二小的数字2,向左推到1的后面)for (int j = src.length - 1 - (i + 1); j >= i; j--){if (src[j] > src[j + 1]){int temp = src[j];src[j] = src[j + 1];src[j + 1] = temp;}System.out.println("swap smallest number : " + Arrays.toString(src));}//当执行完一轮循环之后,向右和向左推的数就不会再参与下一轮的循环了,不然就浪费资源了。}long timeE = System.currentTimeMillis();System.out.println("take time = " + (timeE - timeS));System.out.println("final result : " + Arrays.toString(src));return src;
}

在as中使用单元测试,如下:


@Test
public void sortTest() {aaa a = new aaa();int[] src = new int[]{11,4,3,54,2,32,45,23,55,15,28,99,100,92,22};a.cocktail_sort(src);
}

最后的结果是:


swap smallest number : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]
swap biggest number : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]
swap biggest number : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]
swap smallest number : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]
swap smallest number : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]
take time = 31
final result : [2, 3, 4, 11, 15, 22, 23, 28, 32, 45, 54, 55, 92, 99, 100]

Process finished with exit code 0


总结

鸡尾酒排序是一个定向的冒泡排序,是双向的排序。其最糟或者平均所花费的次数是O(n^2)。

鸡尾酒排序算法(java)相关推荐

  1. 排序算法python实现_合并排序算法– Java,C和Python实现

    排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...

  2. 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  3. 九大排序算法Java实现

    之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录. 1.排序算法时间复杂 ...

  4. 鸡尾酒排序算法c语言,[golang] 数据结构-鸡尾酒排序

    吐个槽 又是一个不正经取名的排序算法.真要说和鸡尾酒间的关系,大概就是想喝到鸡尾酒(得到排序好的队列)就要摇晃酒杯让不同的成分混合均匀(向两个方向冒泡排序) 原理 鸡尾酒排序(Cocktail Sor ...

  5. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  6. java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  7. 鸡尾酒排序算法c语言源代码,排序算法之鸡尾酒排序

    5.3 鸡尾酒排序(Cocktail sort) 既然介绍了冒泡排序.就不得不说一下冒泡排序最为重要的一个变种--鸡尾酒排序(也称为定向冒泡排序).此算法与冒泡排序的不同之处在于鸡尾酒排序是双向进行的 ...

  8. [排序]鸡尾酒排序算法实现

    作者 zhonglihao 算法名 鸡尾酒排序 Cocktail Sort 分类 排序 复杂度 % 大概是1/2 * n^2时间复杂度 形式与数据结构 Matlab代码 特性 来回顺序倒序排序 具体参 ...

  9. 八大排序算法Java

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...

最新文章

  1. C#对图片文件的压缩、裁剪操作初探
  2. 120万公里「真」无人商用里程如何炼成?出租车物流车车车无人,香港乌鲁木齐城城自动...
  3. matlab遗传算法m文件,matlab上安装遗传算法工具箱
  4. 安卓程序段——时间测试函数
  5. VM虚拟机跟主机间共享文件
  6. P2217-[HAOI2007]分割矩阵【dfs,记忆化搜索】
  7. 【HihoCoder - 1881】特殊任务 (树形图,遍历)
  8. 简洁自适应个人码农主页源码
  9. js进阶 10-4 jquery中基础选择器有哪些
  10. 超全面!Autodesk Maya重安装时显示已安装的解决办法
  11. Linux速记软件,Anki:让记忆更轻松的开源神器
  12. 不能连接到虚拟设备 floppy0,因为在主机上没有相应的设备。
  13. jdk1.8 stream() 把List <String>变成String
  14. 在路上●我的年轻●勇往直前●匆匆十年
  15. Cordova app 检查更新 ----JS进行调用(二)
  16. 配置linux网络的坑之IPADDR 等出现Command not found
  17. devcpp如何调试
  18. 战舰STM32控制L9110电机驱动
  19. qt窗体设置圆角后出现黑色的直角
  20. Tomcat 配置数据源

热门文章

  1. VS2019无法下载安装文件,安装失败
  2. 格雷码编码与二进制的关系
  3. 学习笔记(2):Python解析器的安装以及通过python绘制玫瑰花和小猪佩奇-python语言的重点介绍+酷炫案例的展示
  4. unity 设置软件开机自启
  5. NRF51822 Timer
  6. 腾讯严打第三方QQ机器人:多家QQ机器人暂停服务
  7. 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营
  8. 【轻量级】轻量级网络结构总结
  9. 晋职称计算机不硬性要求,评职称必过微机关 今年起晋职称计算机考试取消免试...
  10. 详细分析机器人伺服系统,对比国内外伺服代表产品