#include<stdio.h>
int a[105];
void swap(int *a, int *n, int *m)
{
int temp = *m;
*m = *n;
*n = temp;
}
void c(int *a, int low, int high)
{
if(low < high)
{
int i, j ,k;
i = low;
j = high;
k = a[i];
while(i < j)
{
while(i < j && a[j] >= k )
{
j--;
}
if(i < j)
{
a[i++] = a[j];
}
while(i < j && a[i] < k)
{
i++;
}
if(i<j)
{
a[j--] = a[i];
}
}
a[i] = k;
c(a, 0, i-1);
c(a, i+1, high);
}
}
int main()
{
int n, i ;
scanf("%d", &n);
for(int i = 0; i < n; i++ )
{
scanf("%d", &a[i]);
}
int mid = n/2;
swap(a, &a[0], &a[mid]);
c(a, 0, n-1);
for(int i = 0; i < n; i++)
{
printf(i?" %d":"%d", a[i]);
}
return 0;
}
看看和这里的排序代码有啥差别吧