算法复习之二分查找

原创 2015年07月09日 11:00:21
#include<iostream>
/*
*有序数组的二分法查询
*list:有序的数组,len:数组的长度,key:查询的关键值
*@return
* -1:表示查询失败,其他数字:表示查询成功
*/
int binarySearch(int* list,int len ,int key)
{
    int low = 0,high =len-1;    //数组的两个“游标”
    int mid = (low+high)/2 ;    //找寻中点位置
    while(low <= high)          //查找退出的条件
    {
        if(list[mid] < key)     //如果中点位置的值小于关键值
        {
            low = mid +1 ;      //调整low的位置
            mid = (low+high)/2; //调整中点的位置
        }
        else if(list[mid] > key) //如果中点位置的值大于key
        {
            high = mid-1 ;      //调整high的位置
            mid = (low+high)/2 ;//调整中点的位置
        }
        else                    //查询成功
        {
            return mid ;
        }
    }
    return  -1 ;                //查询失败
}
int main()
{
    int a[] = {0,1,2,3,4,5,6,7,8,9} ;                  //有序的数组
    int pos = binarySearch(a,sizeof(a)/sizeof(int),5) ;//二分法查询元素
    if(pos = -1 )                          //查询返回值判断为失败
        std::cout<<"not in the array"<<std::endl;
    else                                   //成功查询
        std::cout<<a[pos]<<" " <<std::endl ;
    return 0 ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构实验之查找四:二分查找

数据结构实验之查找四:二分查找 Time Limit: 20ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在一个给定的无重复元素的递增...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月04日 09:51
  • 967

《代码之美》读书笔记之二分查找算法

http://fallenlord.blogbus.com/logs/61059167.html 最近终于可以闲下来看看《代码之美》了 ,一年半之前在第三极第一次看见这本书就爱不...
  • chla
  • chla
  • 2012年12月13日 09:52
  • 489

二分查找的算法思想和实现过程

1.二分查找: 又称为 折半查找,二分查找,适合对已经排序好的数据集合进行查找,时间复杂度O(log2n),效率高。假设有一升序的数据集合,先找出升序集合中最中间的元素,将数据集合划分为两个子集,将最...
  • xingbingle
  • xingbingle
  • 2016年06月24日 15:22
  • 1399

C++插入算法及二分插入算法

一、直接插入算法       1) 思路:对于一个给定的有n个元素的序列,        1. 我们从第一元素(i=1)开始作为一个关键字,此关键字左边的元素为已经排好序,        2. ...
  • xiongwei_1101
  • xiongwei_1101
  • 2013年02月18日 18:30
  • 534

POJ 2456 Aggressive cows(二分查找最大化最小值)

题目链接:http://poj.org/problem?id=2456【中文题意】有n间牛舍,第i间牛舍的位置在xi处。有m头牛,他们对牛舍都不满意,经常互相攻击。为了防止牛之间互相攻击,因此把每头牛...
  • qq_32866009
  • qq_32866009
  • 2017年02月02日 20:56
  • 170

复习之二分查找

二分查找又称折半查找 前提条件: 1  采用顺序存储结构 ;2  待查找序列是有序的 如果待查找序列是有序的,则二分查找是最好的查找算法。 不多说,上代码 普通实现...
  • gjanyanlig
  • gjanyanlig
  • 2011年09月17日 14:33
  • 596

复习C语言算法——二分查找

对于数据的排序要根据数据的特征来选择算法,对于已排序好的数据,一般使用二分查找是效率高的一种选择。 #include int main() { int num[] = {2, 3, 4, 5...
  • luanlihun
  • luanlihun
  • 2014年02月11日 10:25
  • 499

一、算法第四版(二分查找、背包、队列、栈)

[toc] 整理自算法 第四版 算法第四版code以及DATA 自带库下载基础部分 二分查找 /* * 从文件读取int数组 * 从控制台输入一个数,如果不在数组里面就打印在控制台 */ ...
  • guanhang89
  • guanhang89
  • 2016年02月17日 11:16
  • 1040

查找算法之二分查找算法

查找算法之二分查找算法1. 概述二分查找算法也称折半查找算法,是在有序数组中用到的较为频繁的一种查找算法。在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,即顺序查找。二...
  • zhliro
  • zhliro
  • 2015年07月23日 08:08
  • 2219

c#二分查找

二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。 public class P...
  • enter89
  • enter89
  • 2012年03月15日 16:35
  • 2016
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法复习之二分查找
举报原因:
原因补充:

(最多只允许输入30个字)