标题:[求助]关于排序的问题
只看楼主
wolf432
Rank: 1
等 级:新手上路
帖 子:22
专家分:2
注 册:2006-1-16
 问题点数:0 回复次数:4 
[求助]关于排序的问题
今天看教程是关于数组排序的问题有个地方没弄明白请教各位是怎么回师
问题是在一个有序的数组中插入一个数,然后输出后这个数组中的书仍然保持有序

#include<stdio.h>
main()
{int i,j,k;
int a[10]={1,2,3,4,6,7,8,9,10};
printf("Please Input a number:");
scanf("%d",&k);
for(i=0;i<9;i++)
{
if(a[i]>k)
{for(j=9;j>i;j--)
a[j]=a[j-1];
a[i]=k; //这点不明白为什么a[i]=k 要放在内层循环里,我把他放在外层循环的时候程序结果是错误的
break;
}
}
printf("i=%d\n",i);
if(i==9) a[i]=k;
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}

[此贴子已经被作者于2007-5-10 13:55:05编辑过]

搜索更多相关主题的帖子: include 
2007-05-10 13:54
wysaijun
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-4-25
得分:0 
这个程序是不是有问题啊,你的数组应该设的更大一些啊,现在插入一个新数就要覆盖掉原来的某一个数,
2007-05-10 14:06
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
得分:0 
出错是必须的

#include<stdio.h>
main()
{int i,j,k;
int a[10]={1,2,3,4,6,7,8,9,10};
printf("Please Input a number:");
scanf("%d",&k);
for(i=0;i<9;i++)
{
if(a[i]>k)
{for(j=9;j>i;j--)
a[j]=a[j-1];
break;/*这个break;用的不错,可以立即防止i再+1,这个用法值得学习*/
}
a[i]=k;/*你把他放外边,不是跟着循环一起走吗?把a[i]<=k,的都改成k了,不错才怪*/
}
printf("i=%d\n",i);
if(i==9) a[i]=k;
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}

偶是菜鸟鸟偶惧WHO?!!!!
2007-05-10 14:31
wolf432
Rank: 1
等 级:新手上路
帖 子:22
专家分:2
注 册:2006-1-16
得分:0 
明白了~谢谢回答~~

2007-05-10 20:49
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 

推荐你使用2个数组解决


自我放逐。。。
2007-05-10 21:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-138207-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.110066 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved