数据结构复习——绪论

临近期末,线上考试的科目还没有定下来
但想着数据结构本身对计算机专业的人就很重要,那就趁此机会重新过一遍!
今天略有空当,就先总结绪论一篇
有兴趣的同学可以跟我一起学习呀QWQ

本文章以 严书——《 数据结构(C语言版)》为准

基本概念

在这里插入图片描述

  1. 数据:是对客观事物的符号表示,在CS中是指所有能输入到计算机中能被运算的符号总称。PS:其实就是能存到电脑里能算的东西

  2. 数据元素:数据的基本单位由若干个数据项组成。

  3. 数据对象:性质相同的数据元素的集合,是数据的子集。

  4. 数据结构:相互间存在一直or多种特定关系的数据元素的集合
    数据元素之间的关系称作结构(这里的结构是逻辑结构)

    数据结构也可用一个二元组表示
    Data_Structure = (D , S)
    comments:D是数据元素的有限集合,S是D上关系的有限集合

在这里插入图片描述


物理结构
数据结构在计算机中的表示(映像)称为数据的物理结构(存储结构)。包括了数据元素的表示和关系的表示

由于计算机中用二进制串来表示一个数据元素,通常称该位串为元素 / 结点
当该位串由若干数据项组成时
(比如虚拟内存的寻址地址由标志位,组索引,块偏移组成)
那么对应于各个数据项的子位串称为数据域

物理结构的组成
在这里插入图片描述


数据类型
数据类型是指:一个值的集合和定义在这个值集上的一组操作的总称。
example:C语言中的int型和定义好的 + - * / 操作
可分为 原子类型(int,long…)和 结构类型(int mylist[N])

ADT 抽象数据类型 (abstract data type)
仅取决于其一组逻辑特征,与计算机内部的实现没有关系。
(抽象的意义在于对其数学特性的抽象)
在这里插入图片描述上图为ADT的分类,和ADT的组成部分

ADT也可使用三元组表示
ADT = (D, S ,P)
comments: D 是数据对象,S是D上的关系集,P为对D的基本操作集

格式

ADT 抽象数据类型名{
    数据对象: <数据对象的定义>
    数据关系: <数据关系的关系>
    基本操作: <基本操作的定义>
}ADT 抽象数据类型名

多型数据类型
是指其值成分不确定的数据类型,(比如数据对象可能为int,char…类型)
但具有相同的数学抽象特性,故称之为多行数据类型


算法与算法分析

算法是为解决某类问题而规定的一个有限长的操作序列(是指令的有限序列)

算法的性质
在这里插入图片描述
有穷性:必须执行有穷步后结束,且每步都可在又穷时间内完成。
确定性:每条指令都不会有二义性,且在任何条件下,算法只有惟一的执行路径 (相同输入只有一个结果)。
可行性:算法的操作都是可以通过已经实现的操作执行优先次实现的。
输入:有0或多个输入。
输出:有 1个或多个输出。


好的算法的目标

  1. 正确性
  2. 可读性
  3. 健壮性(鲁棒性)
  4. 效率与低存储需求

算法的效率分析方法

  1. 事后统计的方法
  2. 事前分析估计的方法

(渐进) 时间复杂度
通常是从算法中选取一种对于所研究问题来说是基本操作的原操作以该操作重复执行的次数作为算法的时间量度。

T(n)=O( f(n) )
f(n)是问题规模 n的函数,随着 n↑,算法的执行时间增长率与f(n)增长率相同。

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n)

空间复杂度
S(n) = O( f(n) )
若输入数据所占空间只取决于问题本身,则只需要分析出输入和程序之外的额外空间。
否则应该考虑输入所需空间。

若额外空间对于输入数据量来说是常数,则称此算法为原地工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值