目录
一、二分查找(折半查找)
二分查找又叫折半查找,只能用于数组中。
核心:在查找区间中选择一个中间的数字(以该数字为边界把区间划分成左右两个区间)与目标值判断,若目标值比它大,则目标值在右区间,相反则在左区间。重复以上操作直到找到目标值。
二分查找的left与right的大小关系、重新划分区间时left与right的值变为多少都与查找区间的开闭性有关。通常都是左闭右闭或者左闭右开。
代码实现:
int binary_search(int arr[],int n,int target){
//查找区间为左闭右闭
int left=0;
int right=n-1;
while(left<=right)
{
int middle=(left+right)/2;
if(arr[middle]<target)
{
left=middle+1;
}else if(arr[middle]>target)
{
right=middle-1;
}else
{
return middle;
}
}
return 0;//在该区间没有找到目标值
}
二、顺序查找
顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。
顺序查找的平均长度:
成功:(1+n)/2
失败:n