给出n和n个整数,从小到大给他们排序
#include <stdio.h>
#include <stdlib.h>void rank(int a[],int n,int begin,int end);
int main()
{
int num;
int a[100000];
int i;
printf("please input the number of numbers\n");
scanf("%d",&num);
printf("please input number\n");
for(i = 0; i < num; i++)
{
scanf("%d",&a[i]);
}
rank(a,num,0,num-1);
printf("the sort number is\n");
for(i = 0; i < num; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void rank(int a[],int n,int begin,int end)
{
if(end >=n||begin < 0||begin >=n||begin >= end )
{
return ;
}
int i = begin;
int j = end;
int tmp = a[begin];
while(i != j)
{
while( i < j && a[j] >= tmp )
{
j--;
}
if(i < j)
{
a[i] = a[j];
i++;
}
while(i < j && a[i] < tmp)
{
i++;
}
if(i < j)
{
a[j] = a[i];
j--;
}
}
a[i] = tmp;
rank(a,n,begin,i-1);
rank(a,n,i+1,end);
}
一个在努力中的未来程序员,如果有更好的算法,欢迎评论。