快速排序

#include <stdio.h> 
#include <iostream> 

//对 arr[l……r]进行处理 
//返回 p , arr[l……p-1] < arr[p] < arr[p + 1……r] 
template <typename T> 
int __partition(T arr[],int l,int r){
    T v = arr[l]; 
    
    //arr[l+1……j] < v;arr[j+1……i] > v
    //i 是我要处理的元素 
    //如果 arr[i] > v,不用管
    //如果 arr[i] < v,swap(arr[j+1],arr[i]),j++ 
    int j = l;  
    for(int i = l+1;i <= r;i++){
        if(arr[i] < v){
            swap(arr[j+1],arr[i]);
            j++;
        }
    }
    swap(arr[j],v);
    return j;
} 

template <typename T>
void __quickSort(T arr[],int l,int r){
    if(l <= r){
        return;
    }
    int pivot = __partition(arr,l,r);                                                                                                                                                                                                                                                     0 g8c7 6ur  b 111111111111111111111111111111(arr,l,r);
    __quickSort(arr,l,pivot - 1);
    __quickSort(arr,pivot + 1,r);
}

//最外层调用的函数 
template <typename T>
void quickSort(T arr[],int n){
    __quickSort(arr,0,n - 1);
}

 

posted @ 2020-06-10 11:29  天凉好个秋秋  阅读(85)  评论(0编辑  收藏  举报