后面应该怎编才能使刚输入的10个数按升序排列呢?
#include <stdio.h>void inarr(int *p,int n);
void sort(int *p,int n);
void main()
{
int *p,n;
inarr(p,n);
sort(p,n);
}
void inarr(int *p,int n)
{
int a[10];
p=a;
for(n=0;n<10;n++)
{
printf("a[%d]=",n);
scanf("%d",p++);
}
}
void sort(int *p,int n)
{
??????????
}
----------------解决方案--------------------------------------------------------
我原来编的:
void sort(int *p,int n)
{
int i,j,t;
int a[10];
p=a;
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
for(i=0;i<10;i++)
printf("%d\n",p++);
}
失败了
发现调用不了上一个函数所输进的数组。
[[it] 本帖最后由 jjk8571100 于 2008-6-18 21:11 编辑 [/it]]
----------------解决方案--------------------------------------------------------
void qsort(int low,int high,int key[])
{
int i=low,j=high,tag=key[i];
if(i<j)
{
do
{
while(tag<key[j] && i<j) j--;
if(i<j)
{
key[i]=key[j];
i++;
while(tag>=key[i] && i<j) i++;
if(i<j)
{
key[j]=key[i];
j--;
}
}
}while(i<j);
key[i]=tag;
qsort(low,j-1,key);
qsort(i+1,high,key);
}
}
----------------解决方案--------------------------------------------------------