二分查找

一 .  二分查找,(折半查找)

前提是:必须是排好序的数组,才能二分。

二分查找的代码实现和排序二叉树的建立思想相同,可以参照原来的博客。

代码:

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型的范围。

原文地址:https://www.cnblogs.com/Lune-Qiu/p/9102002.html