template<class Object>
const Object& median(vector<Object> &a, int left, int right){
int center=(left + right)/2;
if(a[center]<a[left]){
std::swap(a[left],a[center]);
}
if(a[right]<a[left]){
std::swap(a[left],a[right]);
}
if(a[right]<a[center]){
std::swap(a[center],a[right]);
}
std::swap(a[center],a[right-1]);
return a[right-1];
}
template<class Object>
void quickSort(vector<Object> &a, int left, int right){
if(left+10<=right){
const Object& pivot;
int i=left;
int j=right-1;
for(; ; ){
while(a[++i]<pivot){}
while(pivot<a[--j]){}
if(i<j){
std::swap(a[i],a[j]);
}
else{
break;
}
}
std::swap(a[i],a[right-1]);
quickSort(a, left, i-1);
quickSort(a, i+1, right);
}
else{
insertSort(a, left, right);
}
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布