关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列

seki1018 2007-05-15 09:10:55
有一个已经排好的序的数组,及今输入一个数,要求按原来排序的规律将它插入数组中。
程序如下
#include<stdio.h>
void main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
printf("array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&num);
if(num>a[9])
a[10]=num;
else
{
for(i=0;i<10;i++)
if(a[i]>num)
{
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
}
}
printf("now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
我要问的是。。。
为什么是
if(num>a[9])
a[10]=num;
不是a[10]最大吗?
既然都定义了a[11],为什么不是a[10]呢?
插入的数num比a数组最后一个数大,讲其插入的数放在a数组末尾...
但是为什么是a[9]呢?。。。
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
这段也不是很懂。。。
...全文
2030 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ammana_babi 2007-05-17
  • 打赏
  • 举报
回复
呵呵,这很简单呀。

你要先分析下算法。

对于向一个排序好的数组中插入数字,我们需要考虑两种情况:

第一:正常插入。即要插入的数字不比最大的数字大,先让比插入数字大的都向后移动,
然后再让数字插入相应的位置。

第二:非正常插入。即要插入的数字比最大的数字大,这时候不需要移动数字,只需要
直接把数字放在最大数字的后面一个里面就可以了。

你所问的就是第二种情况的处理。

因为a[9]里面存的是最大的数字,如果要插入的数字大于a[9]那么我们则需要,让a[9]
后面的元素a[10]等于要插入的数字。
所以也就有了上的语句
if(num>a[9])
a[10]=num;
tg_scorpio 2007-05-16
  • 打赏
  • 举报
回复
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
这段也不是很懂。。。
-----------------------------------
if(num>a[9])
a[10]=num; //num比a[9]大则num插入到最后
else
{
for(i=0;i<10;i++) //如果num比a[9]小则从第一个数开始比较
if(a[i]>num) //只到num比a[i]小则将num插入到a[i]
{
for(j=9;j>=i;j--) //要把num插入到a[i]就必须把a[i]到a[9]的所有数依次后移一位
a[j+1]=a[j];
a[i]=num;
break;
}
}
bicener 2007-05-16
  • 打赏
  • 举报
回复
你数组初始化的时候只输入了10个数,故最大数是a[9],a[10]=0,定义a[11]只是为了有一个空间来装一个插入的新数
ky310 2007-05-16
  • 打赏
  • 举报
回复
up
tg_scorpio 2007-05-16
  • 打赏
  • 举报
回复
这个明白。。。但是为什么是a[9]
-----------------------------------
因为初始化时a[11]只有10个数
a[9]就是最后一个数了 就是和最后一个数比
pettom 2007-05-16
  • 打赏
  • 举报
回复
j+1就等于10了
pettom 2007-05-16
  • 打赏
  • 举报
回复
因为有个a[j+1]
prgmBaggio 2007-05-16
  • 打赏
  • 举报
回复
最大的数100是存在a[9]里的
seki1018 2007-05-15
  • 打赏
  • 举报
回复
这个明白。。。但是为什么是a[9]
fire_woods 2007-05-15
  • 打赏
  • 举报
回复
从后往前挨个判断.
大于就插入,否则就把当前数据后移一个位置.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧