美文网首页实用算法
什么是 二分法 ?

什么是 二分法 ?

作者: 魔都一只土拨鼠 | 来源:发表于2019-07-22 10:10 被阅读0次

二分法

原文:https://github.com/googege/AMAC/tree/master/basic/8
主要是原文里有不少的代码,看字不如看代码

二分法是针对的有序的序列,我们将要找的数字跟这个区间内的中位数进行比较,然后确定是做区间还是右区间,这点倒是很像分治的思想,例如快排中选择一个基点然后左右排列,递归,所以二分法很像分治的思想。

二分查找的不可用的地方

  • 数据太少,直接遍历即可

  • 无序 如果是无序应该先排序再查找

  • 频繁进行io 这样的话就需要经常的排序,

  • 数据必须是顺序表不能是链表

  • 数据量太大也不行 因为 这么大的数组内存放不下啊。

时间复杂度

很明显每次都是对折如果我们反过来看从1开始每次都是2倍自己那么我们可以得到的是2^k = n 很明显是指数,所以当我们从n然后推出k的时候
也很明显了,就是用的指数的对边 --- 对数 所以它的时间复杂度就是 log2n 我们可以简称为 logn 而且没有任何的其它项,所以说,这就是为什么
二分法比某些O(1)还要快的原因 --- O(1)有可能常数项是100000 但是 log2n就比这个数字小的多.

二分法的变形算法

  • 查找第一个值等于给定值的元素

  • 查找最后一个值等于给定值的元素

  • 查找第一个大于等于给定值的元素

  • 查找最后一个小于等于给定值的元素

相关文章

  • Java 面试系列:算法常用面试题汇总

    1.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现? 二分法查找(Binary Search)也称折...

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 二分法查找

    什么是二分查找法? 二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小...

  • 【思维导图实战派】刻意练习之“遇见成长的自己”计划11/300:

    昨天的感悟是对一分法,二分法,三分法的思考: 一分法,说什么我都信或者说什么我都不信。 二分法:是说什么我会通过思...

  • 前端面试之算法二分法

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

  • 什么是 二分法 ?

    二分法 原文:https://github.com/googege/AMAC/tree/master/basic/...

  • 郭生白传习录精要 002篇

    阴阳什么都是,也什么都不是,它们只是二分法的一种“名”而已,二分法之间不是突变,而是渐变。 名可名,非常名,道可道...

  • 冒泡排序、选择排序和二分法查找

    冒泡排序 选择排序 二分法查找 概念 1.使用二分法好处: 可以加快寻找的效率。2.使用二分法特点: 二分法...

  • py_22 二分法(递归的一种运用)

    一、二分法 使用二分法的大前提:有序序列类型是从小到大排列 算法之二分法:大前提值是按照从小打到排列 需求:有1个...

  • 二分法查找

    二分法基本查找 二分法遍历查找

网友评论

    本文标题:什么是 二分法 ?

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