快速排序非递归形式的C++实现
#include <iostream>
#include<vector>
#include<stack>
using namespace std;
void func1(vector<int> &arr,int lft,int rht,int &mid)
{
mid=lft;
int pivot=arr[mid];
int temp=lft+1;
for(int i=lft+1;i<=rht;i++)
{
if(arr[i]<pivot)
{
swap(arr[temp++],arr[i]);
}
}
temp--;
swap(arr[temp],arr[mid]);
mid=temp;
}
void quicksort(vector<int> &arr)
{
int lft=0,rht=arr.size()-1;
int mid;
stack<int> st;
st.push(lft);
st.push(rht);
while(!st.empty())
{
rht=st.top();
st.pop();
lft=st.top();
st.pop();
func1(arr,lft,rht,mid);
if(lft<mid-1)
{
st.push(lft);
st.push(mid-1);
}
if(mid+1<rht)
{
st.push(mid+1);
st.push(rht);
}
}
}
int main() {
//int a;
//cin >> a;
vector<int> arr{2,3,1,5,6,4,7};
quicksort(arr);
for(auto a:arr)cout<<a<<" ";
}
``