数据结构与算法(一)
数据结构绪论思维导图:
1 绪论
数据是信息的载体,数据元素是数据的基本单位,一个数据元素由若干个数据项构成。数据项是最小的单位。
2 逻辑结构
数据的逻辑结构用于描述数据各个元素的逻辑关系,可分为以下四类:
集合,线性结构,树形结构,图结构。
2.1 集合
数据元素之间除了同属一个集合没有其他关系。
2.2 线性结构
1数据元素存在一对一前后顺序关系。
2除第一个元素和最后一个元素外,其他元素都有直接后继元素和直接前驱元素。
2.3树形结构
元素之间存在一对多的关系,除了对顶层元素外,其余元素都有若干个直接后继元素。
2.4图结构
数据元素之间存在多对多的任意关系。
3 存储结构
数据的存储结构又称为数据的存储方法,除了要存储数据元素,还要隐式地或显式地表示数据元素之间的逻辑关系。
3.1 顺序存储
把逻辑上相邻地元素存储在物理位置上也相邻的存储单元中,元素之间的逻辑关系由存储单元地邻接关系来体现。
3.2 链式存储
借助指示元素地址地指针表示数据元素之间地逻辑关系,即逻辑上相邻的元素物理位置上不一定相邻。
3.3 索引存储
存储数据元素的同时建立索引表。索引表中的每一项称为索引项,一般为关键字地址。
3.4 散列存储
根据元素的关键字直接计算出该元素的存储地址,又称哈希存储
4 算法
4.1 算法的五大特性
输入性:0到多个输入,这些输入是来自某个特性的对象的集合。
输出性:1到多个输出,这些输出同输入有着某种特定关系的量。
有穷性:对于合法的输入值,算法在执行又穷步骤之后结束。
确定性:对于相同的输入执行相同的路径,只能得出相同的输出。
可行性:算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
4.2 对算法的评价标准
正确性:指算法能够完成预定的功能。
易读性:决定了算法是否易于阅读和理解。
健壮性:体现在当环境变化时算法能够适当地做出反应或进行处理,不会产生不需要的运行结果。
高效性:体现在算法地时间复杂度和空间复杂度。
4.3 时间复杂度
算法中每条语句地执行时间之和,即该语句地执行次数(称为频度)和该语句执行一次所需要的时间的乘积。
例如:求两个n阶方阵的乘积。
// #define n 自然数
void Matrixmlt(int A[n][n],int B[n][n],int C[n][n])
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
C[i][j]=0;
for(k=0;k<n;k++)
C[i][j]=C[i][j]+A[i][j]B[i][j];
}}
该算法的所有语句品读之和为T(n)=2n^3 +3n^2+2n+1,算法的时间复杂度是T(n)的矩阵阶数n的函数。