各种排序

Posted 指尖起舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种排序相关的知识,希望对你有一定的参考价值。

数据定义

typedef int DataType;

enum IStatus{IERROR,    ITRUE};

template<class T>
void exchange(T & f, T & s)
{
    T t = f;
    f = s;
    s = t;
};

冒泡

void bubble_sort( DataType datas[], int begin, int end )
{
    DataType tdt;
    for (int i = end - 1; i > begin; -- i)
        for (int j = begin; j < i; j ++)
            if (datas[j] > datas[j + 1])
                exchange(datas[j], datas[j + 1]);
}

插入

void insert_sort( DataType datas[], int begin, int end )
{
    for (int i = begin + 1; i < end; ++ i)
    {
        DataType tdt = datas[i];
        int j = i - 1;
        for (; j >= begin && datas[j] > datas[i]; -- j)
            datas[j + 1] = datas[j];
        datas[j + 1] = tdt;
    }
}

快排

int partition( DataType datas[], int begin, int end )
{
    int i(begin - 1);
    int j(begin);
    while (j < end - 1)
    {
        if (datas[j] <= datas[end - 1])
            exchange(datas[++ i], datas[j]);
        j ++;
    }
    exchange(datas[++ i], datas[j]);
    return i;
}
void quick_sort( DataType datas[], int begin, int end )
{
    if (begin < end - 1)
    {
        int mid = partition(datas, begin, end);
        quick_sort(datas, begin, mid);
        quick_sort(datas, mid + 1, end);
    }
}

以上是关于各种排序的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

在第6731次释放指针后双重免费或损坏

以下代码片段的时间复杂度是多少?

markdown 数组排序片段

各种排序算法代码汇总