一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
前言
在上一篇文章中,我们粗浅的了解了二分查找的原理,那么我们今天再深度了解一下二分查找,想必大家已经了解了二分查找的速度了,那么我们今天来探讨下二分查找的时间复杂度。
深究二分查找
二分查找的时间复杂度是O(logn)的,这样的时间复杂度是十分的高效的,假如我们有一个数据集的n,每次查找过后。查找的区间会被缩小为原来的一半,就是除以2的。最坏的情况下,区间为空后才停止的。当我们的n的数量非常巨大的时候,对应的logn也是非常小的。比如n的2的32次方,大概是42亿,也就是我们使用42亿的数据中进行二分查找寻找一个数据,最多只需要比较32次的。有的时候常级的时间复杂度还没有O(logn)的执行效率高的。当O(1)代表的一个常数值是非常大的情况下。
二分查找的局限性
二分查找的查找效率非常的高,但是有使用场景,它有对应的应用场景的要求,也就是它的局限性。首先,二分查找必须依赖的是顺序表的结构,简单来说就是数组结构,如果我们使用的是链表的话是不行的。因为二分查找需要根据数据下标来随机访问元素,但是链表的随机访问的时间复杂度是O(n),会大大降低查找的时间的。其次,二分查找需要的有序的数据集下进行查找。如果数据无序的话,我们查找之前需要对其进行排序后才可以进行查找的。如果数据量非常小,那么使用二分查找的优势并不明显的。
总结
在深究二分查找后,我们要根据它的优势和它的局限性来进行它的应用场景的选择的。