《大话数据结构》学习笔记(1)

标签(空格分隔): 数据结构 算法 学习笔记


调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。


数据结构

  • 逻辑结构(数据对象中数据元素之间的相互关系)

        1. 集合结构——数组元素除同一集合外无其他关系
        2. 线性结构——一对一关系
        3. 树形结构——一对多关系
        4. 图形结构——多对多关系
    
  • 物理结构/存储结构(针对内存而言,数据的逻辑结构在计算机中的存储形式)

        1. 顺序存储结构
        2. 链式存储结构
    

算法的设计要求

        1. 正确性
        2. 可读性
        3. 健壮性(*当输入数据不合法时,算法也能做出相关处理*)
        4. 时间效率高,存储量低

大O记法 O( )——算法的时间复杂度的体现

推导大O阶的方法:

        1. 用常数1取代运行时间中的所有加法常数(单纯的分支结构,其时间复杂度也是O(1));
        2. 在修改后的运行次数函数中,只保留最高阶项;
        3. 如果最高阶项存在且不是1,则去除与这个项相乘的常数。

常见的时间复杂度

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

常用的时间复杂度所耗费的时间从小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
(O(n^3)以上的时间复杂度均不现实)


算法的空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现
算法空间复杂度公式: S(n)=O(f(n))


终于大致通读了《大话数据结构》啦。现将学习笔记整理一下,整理完毕后将对着《数据结构与算法分析》一书精读,后续会再次更新笔记。笔记只是单独的知识点,方便对着日后对着知识点回忆复习。有任何错误欢迎各位大佬指正啦~第一次尝试用MarkDown编辑~

《大话数据结构》学习笔记(1)_第1张图片

你可能感兴趣的:(数据结构与算法分析)