QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

成熟鱼友Ⅰ

Rank: 5Rank: 5Rank: 5

积分
528
查看: 579|回复: 1

[争议讨论] 直接插入排序小甲鱼代码有漏洞

[复制链接]
最佳答案
1 
累计签到:285 天
连续签到:1 天
helehappy 发表于 2015-3-12 18:34:38 5791 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚才看了小甲鱼老师的数据结构第90集,讲插入排序,讲完我自己敲一遍,运行前代码完全跟小甲鱼一样,但是,我的一运行就报错,调试下,是第二个for循环j--越界了!! 循环里面没有对j的可行性进行检查,我自己添加了一个 &&j >=0   运行成功(对于不同数据检测时j--
可以让j小于0)。 百度了下,百度上的代码有&&j>-1,哈哈,第一次发现小甲鱼老师代码漏洞! 可能是忙的时候疏忽了这个!
  1. void InsertSort(int *k,int n)
  2. {
  3.     int i,j,temp;
  4.     for(i = 1; i < n;i++)
  5.     {
  6.         if(k[i] < k[i-1])
  7.         {
  8.             temp = k[i];
  9.             for(j = i-1;k[j] > temp&&j >=0;j--)
  10.             {
  11.                 k[j+1] = k[j];
  12.             }
  13.             k[j+1] = temp;
  14.         }
  15.     }
  16. }
复制代码
楼层
跳转到指定楼层
最佳答案
0 
累计签到:1 天
连续签到:1 天
jorhelp 发表于 2018-1-2 23:30:37 | 显示全部楼层
哇,我还以为自己错了呢,结果还真是小甲鱼这个小坑货代码有缺陷,幸好来这里search一下,他的代码好像没有设监视哨,倒置越界访问了。

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /2 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-1-23 08:01

快速回复 返回顶部 返回列表