评价一个计算机算法的效率时用到的方法我们称之为Big O(Order of [大约是])。

有序二分查找算法:

比如我们通过二分查找算法查找容器里的10个数据。

那么,我们需要查找一个数据时正常应该是4步就可以找到。

从下面的图可以看出:

这个计算是怎么得来的?

通过不断的将范围对分直至小到不可再分为止。然后查数,总共分了多少次。

以此类推见如下图:

现在我们可以反向去思考一下。比如说在4步内查找的最大范围是多少?

那么计算方式是通过2的幂次方来算出:

但是我们最初知道的是数据的多少而需要得知进行的步数。

那么我们需要用到幂函数的反函数对数。

要记住我们关注的不在于计算对数。理解一个数与其对数之间的关系即可。

评价一个计算机算法的效率用到的方法我们称之为Big O(order of)。

T为时间;

K为一个常量,包含编译生成代码的效率等等;

N为数据范围(数量)。

运行时间:

随机推荐

  1. jstack笔记

    遇到java程序跑不动怎么办,jstack是比较容易想到的一个工具,利用jstack来dump出一个线程堆栈快照,然后具体分析. 一般的堆栈大概是由下面的部分组成的: "resin-2212 ...

  2. py下载网络图片

    很简单,做下记录 import urllib import os url = "图片路径" dir = "d:\\pyimgtest\\G0000001\\" ...

  3. 【bzoj5206】[Jsoi2017]原力 根号分治+STL-map

    题目描述 一个原力网络可以看成是一个可能存在重边但没有自环的无向图.每条边有一种属性和一个权值.属性可能是R.G.B三种当中的一种,代表这条边上原力的类型.权值是一个正整数,代表这条边上的原力强度.原 ...

  4. 【bzoj3518】点组计数 欧拉函数(欧拉反演)

    题目描述 平面上摆放着一个n*m的点阵(下图所示是一个3*4的点阵).Curimit想知道有多少三点组(a,b,c)满足以a,b,c三点共线.这里a,b,c是不同的3个点,其顺序无关紧要.(即(a,b ...

  5. 【bzoj2329】[HNOI2011]括号修复 Splay

    题目描述 题解 Splay 由于有区间反转操作,因此考虑Splay. 考虑答案:缩完括号序列后剩下的一定是 $a$ 个')'+ $b$ 个'(',容易发现答案等于 $\lceil\frac a2\rc ...

  6. 【题解】APIO2014回文串

    哇哦~想不到我有生之年竟然能够做出字符串的题目ヾ(✿゚▽゚)ノ虽然这题比较裸但依然灰常开心! 首先有一个棒棒的性质:本质不同的回文串最多有 O(n) 个.首先 manacher 把它们都找出来,然后问 ...

  7. 分治FFT

    目录 分治FFT 目的 算法 代码 分治FFT 目的 解决这样一类式子: \[f[n] = \sum_{i = 0}^{n - 1}f[i]g[n - i]\] 算法 看上去跟普通卷积式子挺像的,但是 ...

  8. 修改apache的注册表值提高系统权限

    In Windows environments when a service is registered with the system a new key is created in the reg ...

  9. PHP 中的新语法 new static 是个啥意思?

    简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的static, 然后通过子类直接/间接用到了这个stati ...

  10. 玲珑学院oj 1152 概率dp

    1152 - Expected value of the expression Time Limit:2s Memory Limit:128MByte Submissions:128Solved:63 ...