C++ qsort非递归

#include <iostream>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
int sort(vector<int>& nums, int l, int r) {
    int ll = l;
    for(int i = l+1; i < r; i++) {
        if (nums[l] > nums[i]) {
            ll++;
            swap(nums[ll], nums[i]);
        }
    }
    swap(nums[l], nums[ll]);
    return ll;
}
void qsort(vector<int>& nums, int l, int r) {
    if(l >= r) return;
    int mid = sort(nums, l, r);
    qsort(nums, l ,mid);
    qsort(nums, mid+1, r);
}
void qsort1(vector<int>& nums, int l, int r) {
    stack<int> st;
    if(l >= r) return;
    st.push(r);
    st.push(l);
    while(!st.empty()) {
        int l1 = st.top();
        st.pop();
        int r1 = st.top();
        cout<<l1<<" "<<r1<<endl;
        st.pop();
        if(l1 < r1) {
            int mid =sort(nums, l1, r1);
            st.push(mid);
            st.push(l1);
            st.push(r1);
            st.push(mid+1);
            cout << "mid "<< mid;
            cout<<" l "<<l;
            cout<<" r "<<r;
            cout<<" mid+1 "<< mid+1;
        }
    }
}
int main() {
    vector<int> nums = {9,8,7,65,4,2,3,1};
    qsort1(nums, 0, nums.size());
    for(auto v : nums)
    {
    cout<<v<<" ";
        }
    cout<<endl;
}
诸位正值青春年少,一定恣情放纵,贪恋香艳梅施之情,喜欢风流雅韵之事,洒脱木拘。然而诸位可知,草上露一碰即落,竹上霜一触即溶,此种风情难于长久。
原文地址:https://www.cnblogs.com/shilipojianshen/p/13370607.html