首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

这是什么排序,感觉像快排,该如何处理

2012-07-30 
这是什么排序,感觉像快排来自 sphinxC/C++ code/// generic sorttemplate typename T, typename F voi

这是什么排序,感觉像快排
来自 sphinx  

C/C++ code
/// generic sorttemplate < typename T, typename F > void sphSort ( T * pData, int iCount, F COMP ){    int st0[32], st1[32], a, b, k, i, j;    T x;    k = 1;    st0[0] = 0;    st1[0] = iCount-1;    while ( k )    {        k--;        i = a = st0[k];        j = b = st1[k];        x = pData [ (a+b)/2 ]; // FIXME! add better median at least        while ( a<b )        {            while ( i<=j )            {                while ( COMP ( pData[i], x ) ) i++;                while ( COMP ( x, pData[j] ) ) j--;                if (i <= j) { Swap ( pData[i], pData[j] ); i++; j--; }            }            if ( j-a>=b-i )            {                if ( a<j ) { st0[k] = a; st1[k] = j; k++; }                a = i;            } else            {                if ( i<b ) { st0[k] = i; st1[k] = b; k++; }                b = j;            }            //fout << "a is\t" << a << "b is \t" << b << "i is \t" << i << "j is \t" << j <<endl;        }    }}


[解决办法]
这就是快排,只是使用动态规划改写成了非递归版本

热点排行