美文网首页
算法和数据结构3.2二分查找

算法和数据结构3.2二分查找

作者: 数字d | 来源:发表于2019-07-31 15:34 被阅读0次

二分查找也是一种在数组中查找数据的方法。它只能查找已经排好序的数据。

二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边。

因此,比较一次就可以把查找范围缩小一半。重复执行该操作就可以找到目标数据,或得出目标数据不存在的结论。

从如下数组中查找数字6

1 2 3  4 5 6 7  8 9

首先找到数组中间的数字5,将和6和5进行比较。

因为5 < 6 可以得知,6在5的右边,此时将不需要的数字移出查找范围

 6 7 8 9 

接下来寻找剩下数组中的中间位置的数字,此处为7.

因为6< 7,
所以知道6在7的左边。此时将不需要的数字移出查找范围。

6

在剩下的数组中找到中间的数字,此处为6.

因为 6 = 6 ,成功找到目标数字。

总结:

二分查找利用已排好序的数组,每次查找都可以将查找范围减半。查找范围内只剩下一个数据时查找结束。

数据量为n的数组,将其长度减半log2n次后,其中便剩下一个数据了。

时间:

也就是说,在二分查找中重复执行“将目标数据和数组中间的数据进行比较后将查找范围减半”的操作log2n次后,就能找到目标数据(如果没有找到则可以得出数据不存在的结论)。因此它的时间复杂度是O(logn)。

其他:
二分查找的时间复杂度为O(logn),与线性查找的O(n)相比速度上得到了指数倍的提高(x = log2n,则n= 2 x)。

但是二分查找又必须建立在数据已经排好的基础上才能使用,因此添加数据必须添加到合适位置,这就需要额外耗时维护数组。

使用线性查找时候,数组中的数据可以是无需的,一次你添加数据时也无需顾虑位置,直接把它加在末尾即可,不需要耗费时间。

具体使用哪个查找方法,可以根据查找和添加操作的频率来决定。

相关文章

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 想去阿里——这是你必备的实力

    算法和数据结构数组、链表、二叉树、队列、栈的各种操作(性能,场景) 二分查找和各种变种的二分查找 各类排序算法以及...

  • 想去阿里——这是你必备的实力

    算法和数据结构数组、链表、二叉树、队列、栈的各种操作(性能,场景)二分查找和各种变种的二分查找各类排序算法以及复杂...

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

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

  • 算法

    一.算法基础--算法的特性 二.算法基础--算法的复杂度 三.顺序查找和二分查找 顺序查找 二分查找(前提是有序的...

  • java面试需要掌握的知识点

    基础知识: 算法和数据结构数组、链表、二叉树、队列、栈的各种操作(性能,场景)二分查找和各种变种的二分查找各类排序...

  • 数据结构与算法--散列表

    数据结构与算法--散列表 之前学习了基于链表的顺序查找、基于有序数组的二分查找、二叉查找树、红黑树,这些算法在查找...

  • leetcode和牛客网刷题

    在上学时学过《数据结构和算法》这门课,当时学习了数组、链表、哈希表、二叉树、图等数据结构,还有排序算法、二分查找、...

  • 二分查找

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

  • java实现二分查找-两种方式

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

网友评论

      本文标题:算法和数据结构3.2二分查找

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