快速排序非递归代码
Posted 哇小明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序非递归代码相关的知识,希望对你有一定的参考价值。
直接贴代码:
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>> funSetHolder::add(1,2);
//quickSort(aa,0,9);
for(auto&ad:aa)
std::cout<<ad<<" ";
以上是关于快速排序非递归代码的主要内容,如果未能解决你的问题,请参考以下文章