三级上机题

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:53:40
将一个正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),要求编写函数NumSort()实现此功能。
NumSort(int a[10][9])
{int i,j,n,m=8;
int q[9];
for(i=0;i<10;i++)
{
{for(j=8;j>=0;j--)
{if(a[i][j]<a[i][0])
{q[n]=a[i][j];n++;}
else if(a[i][j]>a[i][0])
{q[m]=a[i][j];m--;}
}
}
q[n]=a[i][0];
for(j=0;j<9;j++)
a[i][j]=q[j];
}
}
为什么不能实现?在线等

不用2维数组,用一维的
void NumSort(int a[9])
{
int j,n=0,m=8;
int q[9];
for(j=8;j>=0;j--)
{
if(a[j]<a[0])
{q[n]=a[j];n++;}
else if(a[j]>a[0])
{q[m]=a[j];m--;}
}
q[n]=a[0];
for(j=0;j<9;j++)
a[j]=q[j];
for(j=0;j<9;j++)
printf("%d ",a[j]);
}

NumSort(int a[10][9])
{
inti,j,k;
int num,temp;
for(i=0;j<9;j++)
{
num=a[i][j];
for(j=0;j<9;j++)
if(a[i][j]<num)
{
temp=a[i][j];
for(k=j;k>0;k--)
a[i][j]=a[i][k-1];
a[i][0]=temp;
}
}
}