排序算法

来源:互联网 发布:兄弟连php课程价格 编辑:程序博客网 时间:2024/05/19 22:02

快速排序:

      核心思想:选中序列中的一个元素pivot, 将序列分成两部分,其中左边的部分全部都小于pivot,右边的部分全部都大于pivot。然后对左右分别执行相同的操作,知道排序全部完成。

      时间复杂度:o(nlogn)

 

代码如下:

int partition(int* n,int left, int right)

{
    int i = left;
    int j = right + 1;
    int pivot = n[left];
    while(true)
    {
        while(n[++i] < pivot && i < right);
        while(n[--j] > pivot);
        if(i >= j)
        {
            break;
        }
        if(i < j)
        {
            int t = n[i];
            n[i] = n[j];
            n[j] = t;
        }
    }
    n[left] = n[j];
    n[j] = pivot;
    return j;
}
void quickSort(int* array,int left, int right)
{
    if(left < right)
    {
        int pos = partition(array,left,right);
        quickSort(array,left,pos-1);
        quickSort(array,pos+1,right);
    }
}