#include <iostream>
using namespace std;
template <typename T>
void quicksort(T a[],int low,int high){
int mid;
if(low < high){
mid = partition(a,low,high);
quicksort(a,low,mid-1);
quicksort(a,mid+1,high);
}
}
template <typename T>
int partition(T a[],int low,int high){
int temp = a[low];
while(low < high){
while((low < high)&&(a[high] > temp)){
high--;
}
if(low < high)//一定要,当a[] = {0,1} 试试
a[low++] = a[high];
while((low < high)&&(a[low] < temp)){
low++;
}
if(low < high)//一定要,当a[] = {0,1} 试试
a[high--] = a[low];
}
a[low] = temp;
return low;
}
int main() {
int a[] = {2,3,1,55,6,4,7,3,0};
//int a[] = {2,0,1,5};
int len = sizeof(a)/sizeof(int);
quicksort(a,0,len-1);
for (int i = 0; i < len; ++i)
cout << a[i] << " ";
cout << endl;
}
快排
最新推荐文章于 2024-02-28 16:20:09 发布