直接贴代码:
int part(int *a,int left,int right){
int middle = a[left];
int ind=left;
while (left != right) {
while (a[right] >= middle && left < right)
right--;
while (a[left] <= middle && left < right)
left++;
if (left < right) {
int t = a[left];
a[left] = a[right];
a[right] = t;
}
}
a[ind] = a[left];
a[left] = middle;
return left;
}
void quicksort(int b[],int left,int right){
if(left>right){
return;
}
int i=0,j=0,t=0,middle=0;
std::stack<int> index;
index.push(left);
index.push(right);
while(!index.empty()){
j=index.top();
index.pop();
i=index.top();
index.pop();
int mid = part(b,i,j);
if(mid-1 >i){
index.push(i);
index.push(mid-1);
}
if(mid+1<j){
index.push(mid+1);
index.push(j);
}
}
}
int main(){
int aa[10]={2,5,6,1,14,3,56,7,0,12};
quicksort2(aa,0,9);
//std::vector<std::shared_ptr<BaseHolder>> funSet{Holder::add(1,2)};
//quickSort(aa,0,9);
for(auto&ad:aa){
std::cout<<ad<<" ";
}
}