诗林 发表于 2025-1-4 13:51:59

算法 Class 006(二分搜索)

一、查找一个数

   在一个有序数组中查找数字,每次一循环可 砍掉一半的值,只要确定了 arr 与 num 之间的关系。
大于num 忽略掉 mid及右边的数字
小于 num  忽略掉 mid 及左边的数字
https://i-blog.csdnimg.cn/direct/3a5202d4084f4dc4b693396810769c7e.png
二、 找大于即是 num 的最左位置 

    意思就是该下标及右边的数都是大于即是 num 的
与上面找一个数的区别 ,就是多用一个变量去记下标,假如
        arr 大于即是 num,此时 mid 右边的都是满意的,修改右界限,记一次下标
        arr 小于 num ,此时 mid 左边都是小于 num 的,修改界限即可。
https://i-blog.csdnimg.cn/direct/899b1be5a91c4d1182e60be99d7f0dbf.png
然后写个暴力查找(遍历而已),用Class 005 的内容 验证,可得出上 code大概率是对的
https://i-blog.csdnimg.cn/direct/fa73fb61bf6c4d65966e1dbece2d3bb0.png
对数器。
https://i-blog.csdnimg.cn/direct/e94ed81d34d84f269b627b821f696daa.png
后期的优化思想是 ,假如失败了,拷贝一份当前数组的的内容,拷贝 a1,a2的值,方便调试看看是哪儿出了标题,由于刚才就出标题了,然后在else 代码块那边打了个断点,然后直接 Fn + F5(我用的笔记本),跳转到断点,然后观看监督窗口,发现了错误(如许感觉也行,重要是怕监督窗口也看不出错误),就得拷贝数据,观察一下了。
https://i-blog.csdnimg.cn/direct/5afac05d87ba42a6b8060b0b71c50a19.png
    找 小于即是 num 最右边的下标,必要修改一下判断和小于即是记 坐标就行

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 算法 Class 006(二分搜索)