预备知识:二分查找
已知一个排序数组A,如A=[-1,2,5,20,90,100,207,800],另外一个乱序数组B,如B=[50,90,3,-1,2-7,80],求B中任意某个元素是否在A中出现,结果存储在数组C中,出现用1代表,未出现用0代表,如,C=[0,1,0,1,1,0].
二分查找又称为折半查找,首先,假设表中元素是按升序排列,将表中间位置的关键字与查找关键字与查找关键字比较
1.如果两者相等,则查找成功;
2否则利用中间位置将表分为前后两个子集;
(1)如果中间位置的关键字大于查找关键字,则进一步查找前一子表;
(2)否则进一步查询后一子表
当区间不合法时,即没有找到
递归实现二分查找
#include
循环实现二分查找
bool
测试代码
#include
输出:
leecode题目练习:
35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0