#include <iostream>
using namespace std;
//快速排序算法实现
//挖坑+分治法
void quick_sort(int v[] ,int left,int right)
{
//int x = v[left];
if (left < right)
{
int i = left, j = right, x = v[left];
while (i < j )
{
while ( i <j && v[j] >= x )//先从后往前找比x小的数
{
j--;
}
if ( i < j ) //找到,填充前面那个坑
{
v[i++] = v[j];
}
//从前向后找第一个大于等于x的数
while (i < j && v[i] < x)
{
i++;
}
if (i < j )
{
v[j--] = v[i];
}
}
v[i] = x;//得到调整后基准数的位置i
//递归调用
quick_sort(v,left,i-1);
quick_sort(v,i+1,right);
}
}
void main()
{
int v[] = {2,1,5,7,4,2,98,54,52,654,23,43,25};
quick_sort(v,0,12);
for (int i = 0 ; i < 13;i++)
{
cout<<v[i]<<" ";
}
cout<<endl;
}