![]()
#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);
}