#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;
#define N 10
#define M 100
#define SWAP(x,y) {int tmp=x; x=y; y=tmp;}
void print(int *a)
{
for(int i=0; i<N; ++i)
{
printf("%3d", a[i]);
}
printf("\n");
}
int partition(int *a, int left, int right)
{
int i,j;
for(i=left,j=left; i<N; ++i)
{
if(a[i] < a[right])
{
SWAP(a[j], a[i]);
++j;
}
}
SWAP(a[j], a[right]);
return j;
}
void quickSort(int *a, int left, int right)
{
if(right > left)
{
int pivot = partition(a, left, right);
quickSort(a, left, pivot-1);
quickSort(a, pivot+1, right);
}
}
int compare(const void* p1, const void* p2)
{
int *pleft = (int*)p1;
int *pright = (int*)p2;
return *pleft - *pright;
}
int main()
{
srand(time(NULL));
int *a = (int*)malloc(sizeof(int)*N);
for(int i=0; i<N; ++i)
{
a[i] = rand() % M;
}
print(a);
quickSort(a, 0, N-1);
print(a);
free(a);
return 0;
}