读书人

数据结构算法新解(1)概论 与

发布时间: 2013-10-19 20:58:22 作者: rapoo

数据结构算法新解(一)————概论 与 算法分析大O阶计算方法
第一节:概述

1. 指数

这个很常见,可以说接触的很多。首先,让我们看几个公式:

2. 对数

由于计算机跟2进制的深深的基友关系,所以一般情况下log就表示2为底的。那我们来看公式。

数据结构算法新解(1)————概论 与 算法分析大O阶计算方法

3. 级数

4. 模(mod)

这个也就是取余的意思,关于模的四则运算,运算律啥的,我就不说了,其实昨天这里写的很详细,不过中奖了 硬盘跪了,所以就没了。这里模其实没什么说的,这东西尽量不用,我觉得这东西没什么用,因为我所知道的也就是欧拉定理,以及费马定理(这个就是欧拉定理的一个特殊情况)。这个以后用到的时候我在说吧.

另外对于证明方法,我们常用的其实就两种,第一种是数学归纳法,第二种是反证法。这两种方法我们在中学阶段应该已经了解。第一个就是首先测试一下基准数据(就是比较容易计算的数据一般取1),之后证明 k + 1也成立(即是把k+1带入,之后替代)。而用到数学归纳法的就是刚才的那个N个自然数平方和的那个。反证法 就简单了,一般就是证明出矛盾就ok。

package org.vic.o;public class Test0001 {public static void main(String[] args) {//1 code int temp = 1;//执行1次temp += 1;//执行1次/* * 所以他的执行次数是2次 但是他的大O阶是O(1), * 因为计算方法是 ,如果存在最高位,最高位前面的常数舍弃 * 只保留最高位,如果不存在,常数变为1 * 如果存在if/else语句,则选择最长的那个计算 * 因为相对较大的估计比较安全。 * *///2 code int temp2 = 1;//执行1次temp2 += 1;temp2 += 1; //省略100次+=语句/* * 它的大O阶还是O(1),因为不管多少次都是常数 * 所以以上两种为常数阶 * *///3 codeint temp3 = 1; //执行一次for(int i = 0; i < n; i++){temp3 += 1; //执行了n次}/* * 这里可以看到,他执行了n+1次,所以根据规则 * 大O阶为O(n) 叫线性阶 * *///4 codeint temp4 = 1;while(temp4 < 100){temp4 = temp4 * 2;}/* * 从这里可以发现,这个while中的语句执行了log n次 * 所以他的大O阶为 O(log n) * *///5 code/* * 代码就不写了,就是两个for循环嵌套,大O阶为O(n^2) * * 一般的大O阶的排序为: * O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n) * <O(n!)<O(n^n) * */}}

读书人网 >编程

热点推荐