欢迎光临散文网 会员登陆 & 注册

有序数组查询?C语言经典算法之二分搜寻法

2019-04-01 19:40 作者:C语言基础  | 我要投稿

二分搜寻法(搜寻原则的代表)

新手上路,多多关注,这真的对我很重要


解析

在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象,所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。所以在二分搜寻法中,将数列不断的分为两个部份,每次从分割的部份中取中间数比对,例如要搜寻92于以下的数列,首先中间数索引为(0+9)/2 = 4(索引由0开始):

[3 24 57 57 6768 83 90 92 95]

由于67小于92,所以转搜寻右边的数列:

3 24 57 57 67 [68 83 9092 95]

由于90小于92,再搜寻右边的数列,这次就找到所要的数了:

3 24 57 57 67 68 83 90 [9295]

实现源码


新手上路,多多关注,这真的对我很重要

测试结果


新手上路,多多关注,这真的对我很重要


有序数组查询?C语言经典算法之二分搜寻法的评论 (共 条)

分享到微博请遵守国家法律