一 . 二分查找,(折半查找)
前提是:必须是排好序的数组,才能二分。
二分查找的代码实现和排序二叉树的建立思想相同,可以参照原来的博客。
代码:
int BinaryChop(int* arr,int len, int num)
{
int left = 0;
int right = len-1;
int mid = 0;
while(left <= right)
{
mid = left+(right-left)/2;//(left+right)/2
if(arr[mid] == num)
{
return mid;
}
else if(arr[mid] > num)
{
//去左侧
right = mid-1;
}
else
{
//去右侧
left = mid+1;
}
}
return -1;
}
mid = (left+right)/2; 写成 mid = left+(right-left)/2;
原因:当left和right足够大的时候就超过了int型的范围。