#include "stdio.h"
#define MAX 100
void qsort(int v[],int left,int right);
main()
{
int i,j,a[MAX];
j=10;
for(i=0;i<10;i++)
a[i]=j--;
for(i=0;i<10;i++)
printf("%d ",a[i]);
qsort(a,0,9);
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}
void qsort(int v[], int left, int right)
{
int i, last;
void swap(int v[], int i, int j);
if (left >= right)
return;
swap(v, left, (left + right)/2);
last = left;
for (i = left + 1; i <= right; i++)
if (v[i] < v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last-1);
qsort(v, last+1, right);
}
void swap(int v[], int i, int j)
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
/*主程序为测试程序,程序的核心部分qsort(),该函数完成了对数组内元素的排序。排序的方法是,取数组中间位置的那个数A,用这个数将数组分成两部分,前一部分的数都比A小,后一部分的数都比A大,然后在把比A大的数看做一个数组,把比A小的数看做一个数组,重复上述过程直到每个数组中元素的个数是1为止。*/