数据结构 基本概念

一、什么是数据结构

  1. 数据对象在计算机中的组织方式
    (1)逻辑结构
    (2)物理存储结构
    数据对象必定与一系列加在其上的操作相关联,完成这些操作所用的方法就是算法
  2. 抽象数据类型(Abstract Data Type)
    (1)数据类型:
    数据对象集
    数据集合相关联的操作集
    (2)抽象:
    描述数据类型的方法不依赖于具体实现与存放数据的机器,数据存储的物理结构,实现操作的算法和编程语言无关。
    只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题

二、 什么是算法(Algorithm)

  1. 一个有限的指令集
    (1)接受一些输入(0—N个输入)有些时候不需要输入
    (2)产生输出
    (3)一定在有限步骤之后终止
    (4)每一条指令必须:
    – 有充分明确的目标,不可有歧义
    – 计算机能处理的范围之内
    – 描述不依赖于任何一种语言及具体实现的手段
  2. 空间复杂度S(n)
    根据算法写成的程序在执行时占用存储单元的长度。这个长度与输入数据的规模有关,空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。
  3. 时间复杂度T(n)
    根据算法写成的程序在执行时耗费时间的长度。往往与输入数据的规模有关系
    时间复杂度主要针对乘除次数,忽略加减法
  4. 在分析一般算法的效率时,经常关注两种复杂度
    最坏情况的复杂度Tworst(n)
    平均复杂度 Tavg(n)
    Tavg(n) <= Tworst(n)
    avg不易计算,常考虑最坏复杂度
  5. 复杂度的渐进表示法
    ① T(n) = O[f(n)] 表示存在常数C>0,n0>0,使的当n>n0时,有T(n)<=C * f(n) 上界
    ② T(n) = Ω[g(n)] 表示存在常数C>0,n0>0,使得当n>n0时,有T(n)>=C * g(n) 下界
    ③ T(n) = θ[h(n)] 表示同时有T(n)=O[h(n)] 和T(n) =Ω[h(n)] 既是上界也是下界
  6. ① 若两段算法分别是T1(n)=O[f1(n)] 和T2(n)=O[f2(n)] 则:
    T1(n)+T2(n) = Max ( O[f1(n)] , O[f2(n)] )
    ② 若T(n)是关于n的k阶多项式,则T(n) = O(nk)
    ③ for循环的时间复杂度=循环次数*循环体代码的复杂度
    ④ if-else结构的复杂度取决于if条件判断的复杂度和两个分支的复杂度,总体复杂度取三者中最大。
  7. O(1) < O(logn) < n < O(nlogn) <n2 <n3 < 2n <n!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值