数据结构复习(一)——绪论

一、绪论

数据结构

基本概念
  • 数据
  • 数据元素、数据项
  • 数据对象、数据结构
三要素
  • 逻辑结构

    • 集合结构

    • 线性结构

      • 一对一
    • 树形结构

      • 一对多
    • 图状结构

      • 多对多
  • 数据的运算

    • 结合逻辑结构、实际需求来定义基本运算
  • 物理结构(存储结构)

    • 顺序存储
    • 链式存储
    • 索引存储
    • 散列存储

算法的基本概念

什么是算法
  • 对特定问题求解步骤的一种描述,是指令的有限序列,其中的每条指令表示一个或多个操作。
算法的五个特性
  • 有穷性

    • 必须在执行有穷步之后结束,且每一步都可在有穷时间内完成

      • 注:算法是有穷的,程序可以是无穷的。
  • 确定性

    • 算法中每条指令必须含有确切的含义,对于相同的输入只能得出相同的输出。
  • 可行性

    • 算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  • 输入

    • 有零个或多个输入,输入取自某个特点定的对象的集合。
  • 输出

    • 有一个或多个输出,输出是与输入有某种特定关系的量。
“好”算法的特性
  • 1)正确性

    • 算法应能正确地解决求解问题。
  • 2)可读性

    • 算法应具有良好的可读性,以帮助人们理解。

      • 注释
  • 3)健壮性

    • 输入非法数据时,算法能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。
  • 4)高效率与低存储量需求

    • 时间复杂度低

      • 如何计算

        • 1)找到一个基本操作(最深层循环)
        • 2)分析该基本操作的执行次数x与问题规模n的关系 x=f(n)
        • 3)x的数量级O(x)就是算法的世界复杂度
      • 常用技巧

        • 常对幂指阶

          • O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
        • 加法规则:O(f(n))+O(g(n))=O(max(f(n),g(n)))

        • 乘法规则:O(f(n)) x O(g(n)) = O(f(n)xg(n))

        • 三个结论

          • 结论1:顺序执行的代码只会影响常数项,可以忽略。
          • 结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可。
          • 结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次。
      • 三种复杂度

        • 最坏时间复杂度:考虑输出数据“最坏”的情况
        • 平均时间复杂度:考虑所有输入数据都等概率出现的情况
        • 最好时间复杂度:考虑输入数据“最好”的情况
    • 空间复杂度低

      • 如何计算

        • 普通程序

          • 1)找到所占空间大小与问题规模相关的变量
          • 2)分析所占空间x 与 问题规模 n 的关系 x=f(n)
          • 3)x的数量级O(x)就是算法空间复杂度S(n)
        • 递归程序

          • 1)找到递归调用的深度x 与 问题规模 n 的关系 x=f(n)
          • 2)x的数量级O(x)就是算法空间复杂度S(n)
          • 注:有的算法各层函数所需存储空间不同,分析方法略有区别
      • 常用技巧

        • 常对幂指阶

          • O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
        • 加法规则:O(f(n))+O(g(n))=O(max(f(n),g(n)))

        • 乘法规则:O(f(n)) x O(g(n)) = O(f(n)xg(n))

算法的时间复杂度

算法的空间复杂度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wings(hha)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值