博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法之二分查找
阅读量:5350 次
发布时间:2019-06-15

本文共 919 字,大约阅读时间需要 3 分钟。

概念

    二分查找又称折半查找,它是一种效率较高的查找方法。它的时间复杂度为O(logn)

    二分查找要求:有序的线性表

基本思想

    二分查找的基本思想是划分当前查找区间,区间的范围一步一步的缩小,如果找到直接返回,反之直到区间只有一个元素时停止

实现

    设R为一个值递增的有序线性表

    实现步骤:

  • 首先确定该区间的中点位置:mid=[(low+high)/2]
  • 然后将key值与R[mid]的值比较:若相等,则直接返回当前mid,否则进行确定新的区间操作,这分为两种情况

    ①R[mid]>key则表明key在区间的左边,所以low不变,high=mid-1

    ②R[mid]<key则表明key在区间的右边,所以high不变,low=mid+1

  • 如果没有找到则返回-1

    代码实现:

public int BinSearch(int[] array, int key)        {            int low = 0, high = array.Length - 1, mid;            while (low <= high)            {                mid = (low + high) / 2;                int curValue = array[mid];                if (curValue == key)                    return mid;                if (curValue > key)                {                    high = mid - 1;                }                else                {                    low = mid + 1;                }            }            return -1;        }

转载于:https://www.cnblogs.com/Khadron/p/5344491.html

你可能感兴趣的文章
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
织梦文章内容提取第一张或者多张图片输出
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
降序排列
查看>>
十一、类型转换
查看>>
面试内容,值得一看
查看>>
UILabel
查看>>
【热门技术】三种SEO方式
查看>>
[Hades_技术]哈迪斯初级技术应用
查看>>
SQLiteOpenHelper
查看>>
Luogu P1141 01迷宫【搜索/dfs】By cellur925
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>