开发基础 报表教程 数据字典 对话编程 表单打印 增强出口 SAP接口 S/4 HANA
实战案例 实战笔记 资料下载 CRM
问答互助 会员分享 俱乐部 广告区
论坛指南、建议和投诉
Twilight发表于 2016-09-26 09:32z3765295 最后回复于 2018-04-18 16:08 [复制链接] 2934 1
使用道具 举报
Twilight
管理员
发表回复 回帖后跳转到最后一页
如:1 2 3 3 3 4 5 6 7 8 9,需要读取3值,那么他读取的是哪个位置的3呢?
答案:根据二分法他会始终读取第三个位置的3,即同值3中的第一个。
百度中对二分法的定义:
二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功;否则,若key小,则在字典前半部分中继续进行二分法检索;若key大,则在字典后半部分中继续进行二分法检索。
这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。
偶数个取中间2个其中任何一个作为中间元素。
1 2 3 3 3 4 5 6 7 8 9
第一种情况:
123(取第三个位置的三,即这里的最后一个)
33
12
33(取第三个位置的三,即这里的第一个)
第二种情况:
123(取第三个位置的三,即这里的最后一个)
334
有兴趣的同学可以代码验证一下,顺便回帖附上代码 ,这种逻辑还是很好用的,要记住哦!