搜索
简帛阁>技术文章>鸡尾酒排序(来回排序)

鸡尾酒排序(来回排序)

  鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。

  以序列(2,3,4,5,1)为例,鸡尾酒排序只需要访问一次序列就可以完成排序,但如果使用冒泡排序则需要四次。 但是在乱数序列的状态下,鸡尾酒排序与冒泡排序的效率都很差劲,优点只有观念简单这一点。鸡尾酒排序最糟或是平均所花费的次数都是,但如果序列在一开始已经大部分排序过的话,会接近。

c#代码

static int[] BubbleCocktailSort(int[] data)
        {
            bool flag;
            int m = 0, n = 0;
            for (int i = data.Count - 1; i > 0; i--)
            {
                flag = true;
                if (i % 2 == 0)
                {
                    for (int j = n; j < data.Count - 1 - m; j++)
                    {
                        if (data[j] > data[j + 1])
                        {
                            Swap(data, j, j + 1);
                            flag = false;
                        }
                    }
                    if (flag) break;
                    m++;
                }
                else
                {
                    for (int k = data.Count - 1 - m; k > n; k--)
                    {
                        if (data[k] < data[k - 1])
                        {
                            Swap(data, k, k - 1);
                            flag = false;
                        }
                    }
                    if (flag) break;
                    n++;
                }
            }
        return data;
        }    

 

转载于:https://www.cnblogs.com/xuekai-to-sharp/p/3544082.html

<?php/***鸡尾酒排序*数据结构数组*最差时间复杂度O(n^2)*最优时间复杂度O(n)*平均时间复杂度O(n^2)*空间复杂度O(1)*稳定性稳定*/$arr[1,3,34,2,32,
//鸡尾酒排序算法functionwineSort(arr){consolelog('鸡尾酒算法第0次:'+arrjoin(','));letlenarrlength;for(leti0;i<l
言在前一节中,有冒泡算法的优化。在这:https://wwwcnblogscom/aoximin/p/12251638html。什么是鸡尾酒排序呢?比如说:我们仅仅需要把1放在第一个位置即可。假设我
文实例讲述了java交换排序鸡尾酒排序实现方法。分享给大家供大家参考。具体如下:鸡尾酒排序,也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排序(也可以视作选择排序的一种变形),涟漪排序,来回排序or快乐
这篇我们继续扯淡一下鸡尾酒排序,为了知道为啥取名为鸡尾酒,特意看了下百科,见框框的话,也只能勉强这么说了。要是文艺点的话,可以说是搅拌排序,通俗易懂点的话,就叫“双向冒泡排序”,我想作为码农的话,不
冒泡排序publicclassDemo_sort{publicstaticvoidmain(String[]args){int[]numbersnewint[]{1,5,8,2,3,9,4};for(
题目描述给定一个数组,请你编写一个函数,返回该数组排序后的形式输入:[5,2,3,1,4]返回值由小到大:[1,2,3,4,5]返回值由大到小:[5,4,3,2,1]packagecomrefinit
NC140:排序调用库函数Arrayssort冒泡排序BubbleSort快速排序QuickSort归并排序MergeSort堆排序HeapSort优先级队列PriorityQueue解法1:调用库函
冒泡排序比较所有相邻的两项,如果第一个比第二个大,则交换他们最好O(n)最坏O(n^2)平均O(n^2)稳定functionbubbleSort(array){constlengtharrayleng
一、插入类排序插入类排序的基本思想:在一个已经排好序的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已经排好序的记录子集中,知道将所有待排记录全部插入为止。1、直接插入排序算法思想:直接插入