• 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;
    }
    诸位正值青春年少,一定恣情放纵,贪恋香艳梅施之情,喜欢风流雅韵之事,洒脱木拘。然而诸位可知,草上露一碰即落,竹上霜一触即溶,此种风情难于长久。
  • 相关阅读:
    <摘录>如何在64位linux强制编译32位应用程序
    Ubuntu安装Java
    Mybatis学习
    Java小工具Lombok
    jenkins忘记admin密码的处理方法
    list删除元素
    ConcurrentHashMap详解
    用户登录
    SpringDemo01
    SpringBoot Eclipse 热部署
  • 原文地址:https://www.cnblogs.com/shilipojianshen/p/13370607.html
Copyright © 2020-2023  润新知