《大话数据结构》读书笔记(一)——数据结构基础和算法

  1. 数据结构分类
    (1)按照逻辑结构的方式分为四种:集合结构、线性结构、树形结构、图形结构。
    (2)按照物理结构的方式分为两种:顺序存储结构、链式存储结构

  2. 算法的特性(5个):
    (1)输入、输出:可以没有输入,但是最少有一个输出。
    (2)有穷性:算法一定可以自动结束
    (3)确定性:在一定条件下,只有一条执行路径,不会产生二义问题。
    (4)可行性:每一步都能通过执行有限次完成,可以转换成程序运行,并得到正确的结果。

  3. 算法设计的要求(5个)
    (1)正确性:算法没有语法错误、对于合法数据能够产生满足要求的输出结果、对于非法数据能够得出满足规格的说明结果,这是一般做算法的要求。
    (2)可读性:他人也可以看懂
    (3)健壮性:当输入数据不合法的时候,可以做出相关处理,而不是产生异常或者其他不正常的结果。
    (4)时间效率高和存储量低:简单来说,就是花最少的时间、用最少的存储空间办成同样的事就是好算法。

  4. 算法效率的度量方法
    (1)事后统计方法:不实用,不再描述。
    (2)事前分析估算法(就是一直提到的时间复杂度):一个程序的运行时间依赖于两个方面:算法好坏和问题的输入规模(输入量多少)。测定运行时间最可靠的方法,就是计算对运行时间有消耗的基本操作的执行次数。

  5. 时间复杂度(O())
    分析算法复杂度,最重要的就是分析循环结构的运行情况,数列的相关运算是要补充的知识。
    推导算法:
    (1)用常数1取代运行时间中的所有加法常数。
    (2)在修改后的运行次数函数中,只保留最高项。
    (3)如果最高项存在且不是1,则去除与这个项相乘的常数。
    得到的结果就是O()

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值