Big O
评价一个计算机算法的效率时用到的方法我们称之为Big O(Order of [大约是])。
有序二分查找算法:
比如我们通过二分查找算法查找容器里的10个数据。
那么,我们需要查找一个数据时正常应该是4步就可以找到。
从下面的图可以看出:

这个计算是怎么得来的?
通过不断的将范围对分直至小到不可再分为止。然后查数,总共分了多少次。
以此类推见如下图:

现在我们可以反向去思考一下。比如说在4步内查找的最大范围是多少?
那么计算方式是通过2的幂次方来算出:

但是我们最初知道的是数据的多少而需要得知进行的步数。
那么我们需要用到幂函数的反函数对数。

要记住我们关注的不在于计算对数。理解一个数与其对数之间的关系即可。
评价一个计算机算法的效率用到的方法我们称之为Big O(order of)。

T为时间;
K为一个常量,包含编译生成代码的效率等等;
N为数据范围(数量)。

运行时间:


随机推荐
- jstack笔记
遇到java程序跑不动怎么办,jstack是比较容易想到的一个工具,利用jstack来dump出一个线程堆栈快照,然后具体分析. 一般的堆栈大概是由下面的部分组成的: "resin-2212 ...
- py下载网络图片
很简单,做下记录 import urllib import os url = "图片路径" dir = "d:\\pyimgtest\\G0000001\\" ...
- 【bzoj5206】[Jsoi2017]原力 根号分治+STL-map
题目描述 一个原力网络可以看成是一个可能存在重边但没有自环的无向图.每条边有一种属性和一个权值.属性可能是R.G.B三种当中的一种,代表这条边上原力的类型.权值是一个正整数,代表这条边上的原力强度.原 ...
- 【bzoj3518】点组计数 欧拉函数(欧拉反演)
题目描述 平面上摆放着一个n*m的点阵(下图所示是一个3*4的点阵).Curimit想知道有多少三点组(a,b,c)满足以a,b,c三点共线.这里a,b,c是不同的3个点,其顺序无关紧要.(即(a,b ...
- 【bzoj2329】[HNOI2011]括号修复 Splay
题目描述 题解 Splay 由于有区间反转操作,因此考虑Splay. 考虑答案:缩完括号序列后剩下的一定是 $a$ 个')'+ $b$ 个'(',容易发现答案等于 $\lceil\frac a2\rc ...
- 【题解】APIO2014回文串
哇哦~想不到我有生之年竟然能够做出字符串的题目ヾ(✿゚▽゚)ノ虽然这题比较裸但依然灰常开心! 首先有一个棒棒的性质:本质不同的回文串最多有 O(n) 个.首先 manacher 把它们都找出来,然后问 ...
- 分治FFT
目录 分治FFT 目的 算法 代码 分治FFT 目的 解决这样一类式子: \[f[n] = \sum_{i = 0}^{n - 1}f[i]g[n - i]\] 算法 看上去跟普通卷积式子挺像的,但是 ...
- 修改apache的注册表值提高系统权限
In Windows environments when a service is registered with the system a new key is created in the reg ...
- PHP 中的新语法 new static 是个啥意思?
简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的static, 然后通过子类直接/间接用到了这个stati ...
- 玲珑学院oj 1152 概率dp
1152 - Expected value of the expression Time Limit:2s Memory Limit:128MByte Submissions:128Solved:63 ...