波斯码BOSSMA Information Technology

C#排序算法之鸡尾酒排序

发布时间:2010年9月9日 / 分类:DOTNET / 4,941 次浏览 / 评论

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 或者 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

参照百度百科,整了一个C#版本的,看下边的代码:

/// <summary>
        /// 鸡尾酒排序
        /// </summary>
        static void CockTailSort()
        {
            int numberOfLoop = 0;
            int[] intArr = new int[] { 0, 3, 2, 1, 6, 4, 7, 8, 9, 5 };

            //前后同时排序,能有一些效率的提升
            int bottom = 0;
            //假设一开始有替换
            bool flag = true;
            while (flag)
            {
                //假设没有替换
                flag = false;

                //前半部分排列
                for (int i = bottom; i < intArr.Length - 1; i++)
                {
                    numberOfLoop++;

                    //两个数作比较,把小的排在前边,最大的就会走到最后
                    if (intArr[i] > intArr[i + 1])
                    {
                        int temp = intArr[i + 1];
                        intArr[i + 1] = intArr[i];
                        intArr[i] = temp;
                        flag = true;
                    }
                }

                //前序排列没问题了,后续也没问题
                if (flag)
                {
                    //后半部分排列
                    for (int i = intArr.Length - 2; i > bottom; i--)
                    {
                        numberOfLoop++;

                        if (intArr[i] < intArr[i - 1])
                        {
                            int temp = intArr[i - 1];
                            intArr[i - 1] = intArr[i];
                            intArr[i] = temp;
                            flag = true;
                        }
                    }
                }

                bottom++;
            }

            DisplaySortResult(numberOfLoop, intArr);
        }
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯码,原文地址《C#排序算法之鸡尾酒排序

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论