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

来源:互联网 发布:PLC 布尔型数据 编辑:程序博客网 时间:2024/05/22 02:05

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


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


数据结构

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

        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) nlogn6n3+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编辑~

膨胀

原创粉丝点击