快排的非递归排序
題目都是人出的,沒有不能解決的題目
快排的非遞歸很簡單
template<typename Comparable> void quicksort2(vector<Comparable> &vec,int low,int high){stack<int> st;if(low<high){int mid=partition(vec,low,high);if(low<mid-1){st.push(low);st.push(mid-1);}if(mid+1<high){st.push(mid+1);st.push(high);}//其實(shí)就是用棧保存每一個(gè)待排序子串的首尾元素下標(biāo),下一次while循環(huán)時(shí)取出這個(gè)范圍,對這段子序列進(jìn)行partition操作while(!st.empty()){int q=st.top();st.pop();int p=st.top();st.pop();mid=partition(vec,p,q);if(p<mid-1){st.push(p);st.push(mid-1);}if(mid+1<q){st.push(mid+1);st.push(q);} }} }總結(jié)
- 上一篇: pca 和lda区别
- 下一篇: 生成等概率