随便写的快排
#include <iostream>
using namespace std;
#define N 7
int findMidd(int *a, int r, int p)
{
//find q so that a[q] > a[r] && a[q] < a[p];
if(r < p)
{
int q = 0;
int temp = a[r];
int i = r,j = p;
while(i < j )
{
while(a[i] <= temp && i < p)
{
i++;
}
while(a[j] > temp)
{
j--;
}
if(i >= j)
{
break;
}
swap(a[i],a[j]);
}
a[r] = a[j];
a[j] = temp;
return j;
}
return -1;
}
void qsort_test(int *a, int r, int p)
{
int q = findMidd(a,r,p);
if(q != -1)
{
qsort_test(a,r,q-1);
qsort_test(a,q+1,p);
}
}
int main()
{
int a[] = {2,1,5,4,3,8,9}; // N = 7;
qsort_test(a,0,N-1);
for(int i = 0 ; i< N;i ++)
cout<<a[i]<<" ";
cout<<endl;
}