鱼C论坛

 找回密码
 立即注册
查看: 4011|回复: 3

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

[复制链接]
发表于 2015-3-12 18:34:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
刚才看了小甲鱼老师的数据结构第90集,讲插入排序,讲完我自己敲一遍,运行前代码完全跟小甲鱼一样,但是,我的一运行就报错,调试下,是第二个for循环j--越界了!! 循环里面没有对j的可行性进行检查,我自己添加了一个 &&j >=0   运行成功(对于不同数据检测时j--
可以让j小于0)。 百度了下,百度上的代码有&&j>-1,哈哈,第一次发现小甲鱼老师代码漏洞! 可能是忙的时候疏忽了这个!
void InsertSort(int *k,int n)
{
    int i,j,temp;
    for(i = 1; i < n;i++)
    {
        if(k[i] < k[i-1])
        {
            temp = k[i];
            for(j = i-1;k[j] > temp&&j >=0;j--)
            {
                k[j+1] = k[j];
            }
            k[j+1] = temp;
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-2 23:30:37 | 显示全部楼层
哇,我还以为自己错了呢,结果还真是小甲鱼这个小坑货代码有缺陷,幸好来这里search一下,他的代码好像没有设监视哨,倒置越界访问了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-18 10:25:59 | 显示全部楼层
学习了,多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 09:38:34 | 显示全部楼层
我昨天学习到这里,也发现小甲鱼错了。因为我是自己先写好代码,然后看他的视频印证,所以一眼就看出数组越界的问题,但是后面视频中也没提到这个,然后上百度搜。。。上来这里找,果然有人几年前看过的都提出这个情况了。好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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