首页 > 编程语言 > 详细

C++学习之路: 循环实现二分查找

时间:2014-09-18 00:40:03      阅读:372      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int BinSearch(vector<int> ivec, int key)   //循环实现的二分查找要比递归实现效率要高很多,推荐使用这种方法
{
    int low = 0, high = ivec.size() -1, mid;  //注意high的边界值,ivec.size()指向的是最后一个元素的下一个元素(即指向越界的内存);
    if(ivec[low] == key)
        return low;
    if(ivec[high] == key)
        return high;
    mid = low + (high - low) / 2;

    if(ivec[mid] == key)
        return mid;
    if(ivec[mid] > key)
        high = mid - 1;
    if(ivec[mid] < key)
        low = mid + 1;

    if(low > high)
        return -1 //没有找到则返回 -1;
}


int main(int argc, const char *argv[])
{
    
    return 0;
}

 

C++学习之路: 循环实现二分查找

原文:http://www.cnblogs.com/DLzhang/p/3978353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!