数据结构和算法数据结构和算法分析Java学习笔记

数据结构(一):结构概念 与 算法概念 及 时间复杂度

2018-02-10  本文已影响213人  聪明的奇瑞

数据结构概念

逻辑结构

物理结构(存储结构)

算法概念

int num = 0;
for (int i=1;i<=100;i++){
    num+=i;
}
System.out.println(num);
int sum = 0, i = 1000000;
sum = (1 + i) * i / 2;
System.out.println(sum);
yBeXK.png

算法效率度量方法

函数的渐进增长

算法时间长度

推导大O的方法

常数阶

int sum = 0, i = 1000000;   /*执行一次*/
sum = (1 + i) * i / 2;      /*执行一次*/
System.out.println(sum);    /*执行一次*/

线性阶

int i,n =100;
for (i=0;i<n;i++){
    //....
}

对数阶

int count = 1;
while(count < n){
    count = count * 2;
    /* 时间复杂度为 O(1) 的程序步骤序列 */
}

平方阶

int i,j,n = 200;
for(i = 0;i < n;i++){
    for(j = 0;j < n;j++){
        // 时间复杂度为平方阶 O(n的2次方)
    }
}
int i, j, m = 300, n = 200;
for (i = 0; i < m; i++) {
    for (j = 0; j < n; j++) {
        // 时间复杂度为 O(m*n)
    }
}
public static void main(String[] args){
    int i,n = 200;
    for(i = 0;i < n;i++){
        fun();
    }
}
public static void fun(){
    System.out.println();
}

常见的时间复杂度

执行次数函数 非正式术语
12 O(1) 常数阶
2n+3 O(n) 线性阶
3*(n平方)+2n+1 O(n的平方) 平方阶
5log2n+20 O(logn) 对数阶
2n+3nlog2n+19 O(nlogn) nlogn阶
6n的3次方+2n的平方+3n+4 O(n的立方) 立方阶
2的n次方 O(2的n次方) 指数阶
上一篇下一篇

猜你喜欢

热点阅读