一个关于c的问题

lovelyball 2002-09-05 09:33:13
main()
{
int i,j,a[5];
for(i=0;i<=4;i++)
{
scanf("%d",&a[i]);

}
printf("\n this is the number\n");
for(i=0;i<=4;i++)
{
printf("%d\n",a[i]);
}

reorder(a);
printf("\n ordered \n");
for(i=0;i<=4;i++)
printf("%d\n",a[i]);
}
int reorder(int a[])
{
int i,j,x;
for(i=1;i<5;i++)
{
j=i-1;x=a[i];
while(a[j]>x)
{
a[j+1]=a[j];
j--;
}
a[j+1]=x;
}
}
以上是插入排序的算法,想毕各位高手定是烂熟于心
可是想我在运行的时候就发现,只要输入的数字在10以内就看不到升序的效果
这是怎么回事啊
请赐教
...全文
61 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelyball 2002-09-08
  • 打赏
  • 举报
回复
要是谁能告诉我这个j为什么有这样的变化
我就给分哦
马上给!!
lovelyball 2002-09-06
  • 打赏
  • 举报
回复
程序就是顶上的那个啊
没看见吗?
谢谢拉
dsangvei 2002-09-06
  • 打赏
  • 举报
回复
程序在哪?
lovelyball 2002-09-05
  • 打赏
  • 举报
回复
j为负数的时候是可以成功的
那这里是出了什么问题呢?
我还想进一步了解一下
谢谢
lovelyball 2002-09-05
  • 打赏
  • 举报
回复
我测试过了
要是成功的话
j会有四次为负数
可是在这里
有的时候有时3次,有时2次
没有固定的次数
如果把这个自定义函数取消
而直接写出实现过程的话
程序就没有任何问题了
j一样也会有四次为负数
sxbobo2002 2002-09-05
  • 打赏
  • 举报
回复
up
puppet 2002-09-05
  • 打赏
  • 举报
回复
同意
liushmh 2002-09-05
  • 打赏
  • 举报
回复


while(a[j]>x)//while(a[j]>x&&j>=0)
{
a[j+1]=a[j];
j--;
}

69,371

社区成员

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

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