C 语言: 把多个整数(比如3个)按大小顺序插入已排好序的数组中

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:47:09
想必大家都对 :把一个整数按大小顺序插入已排好序的数组中 这一题有所了解吧,我想把一个改成多个,思前想后还是没有出来,所以想请各位大虾帮忙。thank you very much!!!!
只有5分奖厉呀 还在试用期
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}
请大家在这里修改好吗?

可以用调用函数做,先编一个函数完成:【把一个整数按大小顺序插入已排好序的数组中】的功能,在加一个for循环,循环调用此函数就可以求多个数的排序。

辛苦半天看你的了??
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)//////这个循环语句应该把两个if语句包含,否则只 会把最大的数跟它交换,而没有把所有大数交换!明白吗?
{
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

先将你的的多个数列出一个数组,然后依次取数,再用这个数去与已知大小数列的元素进行比较,再插入即可。

先将要插入的数保存为 int X[MAXSIZE]中输入数字并保存应该会吧,使用循环语句while或者是IF语句循环MAXSIZE次,每次都调用同一个插入函数就可以了
main()