zoukankan      html  css  js  c++  java
  • 鸡尾酒排序(来回排序)

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

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

    Sorting shaker sort anim.gif

    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;
            }    
  • 相关阅读:
    oracle 强杀进程
    oracle查询使用频率和磁盘消耗需要缓存大小
    Oracle定时器执行多线程
    Python
    Python- XML模块
    Python-标准库之OS模块
    Python
    Python-时间复杂度
    Python-冒泡排序
    Python-正则表达式
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3544082.html
Copyright © 2011-2022 走看看