zoukankan      html  css  js  c++  java
  • 二分法查找

    条件:

    数组有序

    每次查找都跟数组中间位置数字比较大小,如果要找的数字比中间位置的数字小,那查找就从【0,中间位置的下标前一个位置】这个范围查找;如果要找的数字比中间位置的数字大,那查找的范围就变成【中间位置下标的下一个位置,最大位置】。如果要找的数字正好等于中间位置上的数字,那就找到了;

    时间复杂度:查找次数 = log2 ^N;

    最好的情况一次就找到,最差的情况,数字在边边上,每次都缩小一半的范围去找target

    int search(int* nums, int numsSize, int target){
    
         int low =0;
         int high = numsSize-1;
         int mid = (low + high)/2;
         while(low < high)
         {
            
             if(target > nums[mid])
             {
                 low = mid +1;
             }
             else if(target < nums[mid])
             {
                 high = mid-1;
             }
             else{
                 return mid;
             }
             mid = (low + high)/2;//要记得更新,否则就死循环了
         }
         if(nums[low] == target)
         {
             return low;
         }
         return -1;
         
    }
    
  • 相关阅读:
    MongoDB 与 MySQL 性能比较
    PySpider简易教程
    使用redis有什么缺点
    禅道
    Shell02
    Shell01
    性能测试06
    性能测试05
    性能测试04
    性能测试03
  • 原文地址:https://www.cnblogs.com/8335IT/p/14814795.html
Copyright © 2011-2022 走看看