数据结构学习笔记(一)预备内容

本文介绍了抽象数据类型的概念,强调其独立于物理实现和编程语言的特点,以及算法的基础知识,包括空间复杂度S(n)和时间复杂度T(n)的定义,并探讨了算法复杂度的表示方法及计算规则。同时,提到了特定结构如for循环和if-else在计算复杂度中的考量因素,并以求最大子列和的算法为例说明时间复杂度为O(N)的情况。
摘要由CSDN通过智能技术生成

抽象数据类型

  • 数据类型
    • 数据对象集
    • 数据集合相关联的操作集
  • 抽象:描述数据类型的方法不依赖于具体实现
    • 与存放数据的机器无关
    • 与数据存储的物理结构无关
    • 与实现操作的算法和编程语言均无关

只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题

算法

  • 一个有限指令集
  • 接受一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止
  • 每一条指令必须
    • 有充分明确的目标,不可以有歧义
    • 计算机能处理的范围之内
    • 描述应不依赖于任何一种计算机语言以及具体的实现手段

空间复杂度S(n)

-根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。

时间复杂度T(n)

  • 根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。
  • 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) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值