• 鸡尾酒排序(来回排序)


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

      以序列(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;
            }    
  • 相关阅读:
    28.注解2.md
    29.Junit测试框架.md
    WCF学习笔记(2)-WCF的通讯过程
    WCF学习笔记(1)-一个完整的例子
    Sql2008事务日志已满处理
    面向对象六大原则
    计算机基础(1)-原码、反码、补码
    Spring.Net学习笔记(7)-事务
    Spring.Net学习笔记(6)-方法注入
    Spring.Net学习笔记(5)-集合注入
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3544082.html
Copyright © 2020-2023  润新知