美文网首页
排序算法-鸡尾酒排序

排序算法-鸡尾酒排序

作者: 阿春_abcdlcq | 来源:发表于2018-04-22 08:17 被阅读0次

鸡尾酒排序是冒泡排序的一种改进算法,效果稍好(可能减少交换次数)。先从头比到尾找到最大(或最小),然后从尾比到头找到最小(或最大)。

时间复杂度:o(n^2),比较总次数为((n-1)+1)*(n-1)/2=n*(n-1)/2

C代码:

template <typename T>

void cocktail_sort( T t[], int size, bool bASC = true )

{

    T temp;

    int left = 0;

    int right = size-1;

    while( left<right )

    {

        for ( int i=left; i<right; ++i )

        {

            if ( (bASC && t[i]>t[i+1]) || (!bASC && t[i]<t[i+1]) )

            {

                temp = t[i+1];

                t[i+1] = t[i];

                t[i] = temp;

            }

        }

        --right;

        for ( int i=right; i>left; --i )

        {

            if ( (bASC && t[i-1]>t[i]) || (!bASC && t[i-1]<t[i]) )

            {

                temp = t[i];

                t[i] = t[i-1];

                t[i-1] = temp;

            }

        }//end of for ( int i=right; i>left; --i )

        ++left;

    }//end of while( left<right )

}

相关文章

  • 鸡尾酒排序

    鸡尾酒排序算法是一种定向的冒泡排序算法,由于其来回折腾,因此又叫鸡尾酒搅拌排序、来回排序或者是涟漪排序、快乐小时排...

  • 鸡尾酒排序

    鸡尾酒排序 @(F1 - 算法学习)[排序|noteton] WIKI上的定义 鸡尾酒排序,也就是定向冒泡排序、鸡...

  • 2018-10-26

    排序算法 排序算法冒泡排序鸡尾酒排序选择排序插入排序希尔排序归并排序快速排序堆排序 先说一些 关于排序的定义吧 排...

  • 排序算法(九)鸡尾酒排序

    排序算法(九)鸡尾酒排序   鸡尾酒排序(Cock-Tail-Sort)是基于冒泡排序做一点点优化而来的。冒泡排序...

  • 干货分享:白话12种排序算法

    常见的排序算法: 快速排序、堆排序、归并排序、选择排序 插入排序、二分插入排序 冒泡排序、鸡尾酒排序 桶排序、计数...

  • 算法之美——鸡尾酒排序

    1.概念 鸡尾酒排序又称双向冒泡排序、鸡尾酒搅拌排序、搅拌排序、涟漪排序、来回排序或快乐小时排序, 是冒泡排序的一...

  • 鸡尾酒排序Cocktail Sort

    鸡尾酒排序,也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排序(也可以视作选择排序的一种变形),涟漪排序,来回排序or ...

  • 经典排序算法总结

    这一部分我们对面试时涉及到的排序算法进行总结,主要包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒...

  • 排序-鸡尾酒排序

    鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进。此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则...

  • 排序算法-鸡尾酒排序

    鸡尾酒排序是冒泡排序的一种改进算法,效果稍好(可能减少交换次数)。先从头比到尾找到最大(或最小),然后从尾比到头找...

网友评论

      本文标题:排序算法-鸡尾酒排序

      本文链接:https://www.haomeiwen.com/subject/vtjqlftx.html