直接插入排序问题

sinat_29738921 2015-08-09 07:31:28
1、void insert_sort(int a[],int length)
2、{
3、int t;
4、for(int i=0;i<length;i++)
5、{
6、t=a[i]; //将待排序的元素a[i]赋给t

7、 for(int j=i-1;j>=0&&a[j]>t;j--)
8、{
9、a[j+1]=a[j]; //把比t大 (a[j]>t) 的元素,全部后移一个位置
10、}
11、a[j+1]=t; //把待排序的t插入到a[j+1].完成插入排序过程。
}
}

问题是第九行a[j+1]=a[j]; //把比t大 (a[j]>t) 的元素,全部后移一个位置
中不是已经把a[j]后移到a[j+1]的位置吗?那为什么第11行还可以把 t 的值插入到a[j+1]这个位置;
...全文
65 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_29738921 2015-08-11
  • 打赏
  • 举报
回复
好的 谢谢各位了 结贴
DO IT 2015-08-10
  • 打赏
  • 举报
回复
因为循环完后j--了。
疯狂熊猫人 2015-08-09
  • 打赏
  • 举报
回复
你表要喝我,你这段代码可以运行吗?j已经出来作用域了。j其实应该在6行后面定义int j= i-1;
sayHi2me 2015-08-09
  • 打赏
  • 举报
回复
有个问题,a[j+1]=t这里的j不是已经出了作用域了,哪来的j

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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