美文网首页
算法之二分法查找

算法之二分法查找

作者: 暮雨沉沦 | 来源:发表于2016-12-04 21:36 被阅读83次

文章内代码来自 http://www.cnblogs.com/wakerobin/archive/2009/10/12/1581914.html

二分法查找

二分法查找其实就是折半查找,一种效率较高的查找方法。针对有需数组来查找的。

主要思想是:(设查找的数组期间为array[low, high])

(1)确定该期间的中间位置K

(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:

a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]

b.array[k]

时间复杂度:O(log2n);

代码实现:

/// 二分法查找

/// 目标数组(已经排序好了)

/// 查找的数

/// 目标数的索引

public int BinarySearch(int[] array, int T)

{

int low, high, mid;

low = 0;

high = array.length - 1;

while (low <= high)

{

mid = (low + high) / 2;

if (array[mid] < T)

{

low = mid + 1;

}

else if (array[mid] > T)

{

high = mid - 1;

}

else

{

return mid;

}

}

return -1;

}

总结:二分法查找主要用于已经排序的数据中,查字典直接翻就是用了二分法的思想,因为字典正好是排序的。使用两个点来圈定比较的范围,初始范围是全部数据,然后寻找中间位置的数据,如果要找的数据比它大,则比较范围算小为0~中间位置的这块数据,否则是后一段数据,如此循环到结束。

相关文章

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

  • 二分法查找

    二分法查找 : 目的 : 查找一个数组中是否含义某个元素 : 有返回数组中的位置 ,没有返回 -1 算法: 二分法...

  • 算法之二分法查找

    文章内代码来自 http://www.cnblogs.com/wakerobin/archive/2009/10/...

  • 算法:二分法查找(折半查找法)

    算法:二分法查找(折半查找法) 这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道...

  • 解析前端面试之二分查找算法

    二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。 二分法查找的思路如下: (1)首先,从数组的...

  • 二分法查找

    二分法查找 算法:二分法查找适用于数据量较大,但是数据需要先排好序 (1)确定该区间的中间位置k(2)将查找的值T...

网友评论

      本文标题:算法之二分法查找

      本文链接:https://www.haomeiwen.com/subject/fzzhmttx.html