程序 + 文档 = 软件
算法 + 数据结构 = 程序
数据结构与算法的理论基础离散数学中的图论、集合论和关系论等。
数据结构课程的内容来源于图论、操作系统、编译系统、编码理论及检索与排序技术等。
1.什么是数据结构?
非数值型程序设计中数据的组织方式及其处理的算法
数据结构的三个方面:
(1)数据的逻辑结构
逻辑结是式数据的组织形式,与机器无关。
4种基本的逻辑结构:
(2)数据的物理结构(存储结构)
指数据在存储器种的存放方式,包括数据元素的表示和关系的表示。
4种基本的存储结构:
顺序存储:将数据结构中各元素按照其逻辑顺序存放于一片连续的存储空间中。如C语言的一维数组。
优点:随机访问快(可以直接计算数据的地址)
缺点:插入、删除效率低,不利于动态增长
链式存储:数据结构中各元素可以存放到存储器的不同地方,数据元素之间以指针(地址)链接。
缺点:随机访问慢
优点:便于插入、删除和动态增长
索引存储:
在存储数据的同时,建立一个附加的索引表,即索引存储结构 = 数据 + 索引表。索引表存放各数据元素的地址
索引表的组织方式:
顺序存储:索引表占用连续空间
链式存储
索引存储:多级索引(多重索引)
例如,二级索引:将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中
此外,还有三级索引等。
散列存储:根据数据元素的特殊字段(称为关键字key),计算数据元素的存放地址,然后数据元素按地址存放,所得到的存储结构为散列存储结构(或Hash结构)。
(3)数据的操作(算法实现)
基本的数据操作:增删改查
查找:在数据结构中寻找满足某条件的数据元素的位置或值。
插入:在数据结构中添加新的数据元素。
删除:删去数据结构中指定的数据元素。
更新:改变数据结构中某个数据元素一个或多个数据项的值。
排序:重新安排数据元素之间的逻辑顺序,使之按(某个数据项的)值由小(大)到大(小)的次序排列
2.什么是算法?
算法是一个有穷规则(或语句、指令)的有序集合。它确定了解决某一问题的一个操作序列。对于问题的初始输入,通过算法有限步的运行,产生一个或多个输出。
简单地说,算法是指解决问题的由一系列具体步骤组成的方法或过程。
对特定问题求解步骤的一种描述
是一有限长的操作序列
算法的性质:
1) 有穷性—— 算法执行的步骤是有限的,就是说是可终止的;
2) 确定性—— 每个计算步骤无二义性;
3) 可行性—— 每个计算步骤能够在有限的时间内完成;
4) 输入—— 算法有一个或多个输入;
5) 输出—— 算法有一个或多个输出。