//对arr[l...r]部分进行partition操作
//返回p 使得arr[l...p-1]<arr[p]; arr[p+1]>arr[p]
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
int j=l;
for (int i=l+1;i<=r;i++){
if(arr[i]<v){
swap(arr[j+1],arr[i]);
j++;
}
}
swap(arr[l],arr[j]);
return j;
}
template<typename T>
void __quickSort(T arr[],int l,int r){//对arr[l...r]部分进行快速排序
if(l>=r){
return;
}
int p=__partition(arr,l,r);
__quickSort(arr,l,p-1);
__quickSort(arr,p+1,r);
}
//快速排序
template<typename T>
void quickSort(T arr[],int n){
__quickSort(arr,0,n-1);
} ```
快速排序
最新推荐文章于 2020-06-29 11:49:00 发布