1.
#include <stdio.h>
#define MAX 1000005
int a[MAX];
void sort(int a[], int p, int q)
{
int l = p, r = q, x = a[(p+q)/2], t;
while (l < r)
{
while (a[l] < x) l++;
while (a[r] > x) r--;
if (l <= r)
{
t = a[l];
a[l] = a[r];
a[r] = t;l++;r--;
}
}
if (l < q)
sort(a, l, q);
if (p < r)
sort(a, p, r);
}
int main()
{
int n, i;
scanf("%d", &n);
if(n<=0)
return -1;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
if(n==1)
printf("%d\n",a[0]);
else
{
sort(a,0,n-1);
for (i=0; i<n; i++)
printf("%d ",a[i]);
}
return 0;
}
2.
#include<stdio.h>
void qsort(int a[],int s,int r);
int participation(int a[],int s,int r);
int count=0;
void main()
{
int n;
int a[10000];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,0,n-1);
for(int j=0;j<n;j++)
printf("%d ",a[j]);
}
void qsort(int a[],int s,int r)
{
if(s<r)
{
count++;
if(count%10==0)
{
int star=s;
int tail=r;
while(star<tail)
{
int tem;
tem=a[star];
a[star]=a[tail];
a[tail]=tem;
star++;
tail--;
}
}
int q;
q=participation(a,s,r);
qsort(a,s,q-1);
qsort(a,q+1,r);
}
}
int participation(int a[],int s,int r)
{
int i=s-1,p=r;
int temp;
int j=s;
while(j<p)
{
if(a[j]<=a[r])
{
i++;
j++;
}
else
{
temp=a[p-1];
a[p-1]=a[j];
a[j]=temp;
p--;
}
}
temp=a[r];
a[r]=a[i+1];
a[i+1]=temp;
return i+1;
}