#include <iostream>
#include<time.h>
#define LEN 100
using namespace std;
int partition(int* a, int left, int right)
{
double x = a[right];
int i = left-1, j = right;
for (;;)
{
while(a[++i] < x) { }
while(a[--j] > x) { if(j==left) break;}
if(i < j)
swap(a[i], a[j]);
else break;
}
swap(a[i],a[right]);
return i;
}
void quick(int* a, int left, int right)
{
stack<int> t;
if(left<right)
{
int p = partition(a, left, right);
if (p-1>left)
{
t.push(left);
t.push(p-1);
}
if (p+1<right)
{
t.push(p+1);
t.push(right);
}
while(!t.empty())
{
int r = t.top();
t.pop();
int l = t.top();
t.pop();
p = partition(a, l, r);
if (p-1>l)
{
C++实现快速排序(非递归版)
最新推荐文章于 2023-06-17 21:32:02 发布