快速排序非递归实现

来源:互联网 发布:大数据运维管理平台 编辑:程序博客网 时间:2024/06/07 00:06
#include<iostream>#include<vector>#include<stack>using namespace std;vector<int> a;class node{public:int low;int high;};int parition(int low,int high){int p=a[low];int i=low;int j=high;if(j>i){while(j>i){while(j>i&&a[j]>p)j--;while(j>i&&a[i]<=p)i++;if(j>i){int temp=a[i];a[i]=a[j];a[j]=temp;}}int temp=a[low];a[low]=a[i];a[i]=temp;return i;}}void q_sort(){stack<node> s;node now;now.low=0;now.high=a.size()-1;s.push(now);while(!s.empty()){node now_n=s.top();s.pop();int p=parition(now_n.low,now_n.high);if(p-now_n.low>1){node now_t;now_t.low=now_n.low;now_t.high=p-1;s.push(now_t);}if(now_n.high-p>1){node now_t;now_t.low=p+1;now_t.high=now_n.high;s.push(now_t);}}}int main(){int n;int t;cin>>n;for(int i=0;i<n;i++){cin>>t;a.push_back(t);}q_sort();for(int i=0;i<n;i++){cout<<a[i]<<" ";}return 0;}

0 0