鸡尾酒排序算法(java)

您所在的位置:网站首页 鸡尾酒排序 鸡尾酒排序算法(java)

鸡尾酒排序算法(java)

2024-07-10 17:32| 来源: 网络整理| 查看: 265

欢迎关注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)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3