zoukankan      html  css  js  c++  java
  • 算法回顾(三) 二分查找

    二分查找,顾名思义,它的原理是,将排序好的数列分成两部分,判断期待值在高位部分还是在低位部分,然后再将期待值所在的那个区间的数列重新按照这个规则划分成两部分,再比较,直到最后不能划分为止。

    优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

    假设其数组长度为n,那么该算法复杂度为o(log(n))。代码如下:

    1 int binarySearch( int *a , int begin, int end, int key)
    2 {
    3     int mid = begin + ((end - begin)>>1 ), index;
    4     index = a[mid] < key && begin +1 < end ? binarySearch(a, mid+1, end ,key):
    5                (a[mid] > key && begin + 1 < end ? binarySearch(a, begin, mid, key):
    6                  mid*(a[mid] == key) + (-1)*(a[mid] != key) );
    7 
    8     return index;
    9 }

    ps.第三行是为了防止int相加后超过int的最大值,故采用这样的算法。

  • 相关阅读:
    CentOS7安装mysql-8
    zabbix监控规划及实施
    集群技术
    自动化脚本-配置LVS(DR模式)
    Pacemaker+ISCSI实现Apache高可用-配置
    创建集群corosync
    我的第一个python程序——猜数字
    质量报告
    新需求测试与回归测试
    冒烟测试
  • 原文地址:https://www.cnblogs.com/csusheep/p/4724745.html
Copyright © 2011-2022 走看看