递归调用
#include<iostream>
using namespace std;
void Swap(int &a, int &b)//实现交换
{
int t = a;
a = b;
b = t;
}
void Qsort(int a[],int m,int n)
{
if (m >=n)//递归退出 全部找完
{
return;
}
int left = m;//左元素标记
int right = n;//右元素标记
int q = a[m];//基准元素
while (left < right)
{
//左移找到比基准元素小的
while (left < right && a[right] > q)
{
right--;
}
//右移找到比基准元素大的
while (left < right && a[left] < q)
{
left++;
}
//二者交换
Swap(a[left], a[right]);
}
将基准元素放到比其小的后面
Swap(q, a[left]);
//递归调用
Qsort(a, m, left - 1);
Qsort(a, right + 1, n);
}
int main()
{
int a[10] = {9,8,7,6,5,4,3,2,1,0 };
for (int i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
Qsort(a, 0, 10);
for (int i = 0; i < 10; i++)
{ cout << a[i] << " ";}
return 0;}