8.二分查找[单元素||多元素]难点剖析

8.二分查找

[置顶] 犯了一个错误

1.14日更新改正: 如果查询上界>int型的一半 那么mid=(zuo+you)/2 可能会溢出
故可以写成减法形式 :mid= zuo+(you-zuo)/2

1. 二分查找算法

注意:二分上界超过int型数据范围的一半,那么当欲查询元素在序列较靠后的位置时,语句mid=(left+right)/2中的left+right就有可能超过int而导致溢出
此时一般使用mid=left+(right-left)/2这条等价语句作为代替以避免溢出。

源代码:
无重复元素时
此时查找区间段是 [0,n-1]; n为数组长度

/*
无重复元素时
此时查找区间段是 [0,n-1];   n为数组长度
*/
#include 
using namespace std;
int midso(int a

你可能感兴趣的:(入门篇-算法初步)