[算法]快速排序

2018-07-02  本文已影响0人  jenye_

基本思路

实现

有数组A


代码实现

void swap(int &a[i],int &a[j]){
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}


void QuickSort(a[],int s,int e){
    //如果只有一个元素了,就不排序了 
    if(s >= e)
        return;
    int k = a[s];
    int i = s,j =e;
    while(i!=j){
        while(j>i && a[j]>=k)
            j--;
        swap(a[i],a[j]);
        while(j>i && a[i]<=k)
            i++;
        swap(a[i],a[j]);
    } // 处理结束之后,a[i] = k (循环里两次交换) 
    QuickSort(a,s,i-1);
    QuickSort(a,i+1,e);
    
}

复杂度分析

上一篇 下一篇

猜你喜欢

热点阅读