#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); }