01笔记 数据结构——第一章:绪论—— 基于《数据结构》(C语言版) 第2版 (严蔚敏等)和《数据结构教程》蔡子经,施伯乐

本课程笔记基于
《数据结构》(C语言版) 第2版 (严蔚敏等)

绪论

早期计算机主要用于数值计算
而数据结构研究非数值计算程序设计中的操作对象、关系、操作的学科

概念

①数据
客观事物的符号表示
是所有可以输入到计算机中并被计算机程序处理的符号总成
Ex:实数,字符串,图形,图像,声音

②数据元素
数据的基本单位
通常作为一个整体进行考虑和处理,有些情况下数据元素也称为元素、记录等。数据元素用于完整描述某一个对象

③数据项
组成数据元素、独立含义、不可分割的最小单位

④数据对象
性质相同的数据元素集合,是数据的子集

⑤数据结构
相互之间存在一种或多种特定关系的数据元素集合
也就是 带“结构”的数据元素集合

⑥逻辑结构
描述元素之间的逻辑关系:
与数据储存无关,独立于计算机。
两个要素:数据元素 关系

主要有集合(无关系)、线性结构(一对一)、树结构(一对多)、图结构或网状结构(多对多)
在这里插入图片描述

⑦存储结构
顺序存储:元素依次存放连续储存空间中
链式存储:指向其他节点(要附加指针字段
在这里插入图片描述
⑧数据类型
一个值的集合和定义在这个值集合的操作总称

⑧抽象数据类型(ADT Abstract Data Type)
抽出实际问题本质,
一般指由用户定义、表示应用问题以及定义在模型上一组操作的总成。
A 数据对象 B 数据对象上的关系 C 数据对象的基本操作集合

于是我们可以得到一个简略的概述
程序 = 数据结构 + 算法

例子①:
学生信息管理系统
操作对象:学生信息(学号、姓名、专业)
操作对象之间的关系:线性关系
操作算法:查询、插入、修改、删除
数据结构:线性表

例子②:
冒泡排序
操作对象:实数
关系:线性关系
算法:排序

Ex:
基础数据结构:
线性结构:线性表、栈、队列,广义表,串,数组
非线性结构:树 图
基本数据处理技术:查找、插入、排序、删除

算法

算法:
为了解决问题规定的有限长操作序列
①有穷
②确定
③可行
④输入
⑤输出

评价准则
①正确
②可读
③鲁棒(完备性)
④高效

算法分析

效率的度量。
①问题规模
输入量,一般用n代表整数
②语句频率
语句重复执行次数
③基本语句
频度最大语句

基本语句重复执行次数是规模n某个函数f(n),算法的时间复杂度记T(n) = O(f(n)) 称之为渐近时间复杂度
时间复杂度一般由嵌套最深的语句频度决定

但也得考虑最好最坏和平均时间复杂度,在线性表(1,4,5,6,8)中,查找某个元素最坏情况是查5词,最好查1次,不方便说明,我们可以引入等可能性,每个元素被查找的可能就是五分之一。查找一万次,对应每个元素平均损耗时间就是一万×五分之一;

空间复杂度,算法需要存储空间的度量S(n) = O(f(n))
比如经典的把线性表数据倒置

int a[n];
for(int i = 0; i < n/2 ; i++)
{
	t = a[i];
	a[i] = a[n-i-1];
	a[n-i-1] = t;
}

只耗费一个储存空间 认为复杂度是O(1)

可以开个新数组

int a[n];
int b[n];
for(int i = 0; i < n; i++)
	b[i] = a[i];
for(int i = 0; i < n; i++)
	a[i] = b[n - i - 1];

用了一个相同大小的数组,于是空间复杂度是O(n)

第一章课后习题解析

1 在数据结构中,从逻辑上可以把数据结构分成线性结构和非线性结构

2 与数据元素本身的形式、内容、相对位置、个数无关的是数据的C。
A.存储结构
B.存储实现
C.逻辑结构
D.运算实现

3 通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()
不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致.

4
A.数据元素是数据最小单位(数据项才是
B.数据项是数据的基本单位(数据元素才是
C.数据结构是带有结构的各数据项的集合(要有一种或多种特定关系
D.一些表面上不同的数据可以有相同的逻辑结构

5
算法时间复杂度取决于
问题规模+语句频度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值