本博文意在巩固基础知识,高手请绕过。
数据结构(data structure):数据元素和数据元素关系的集合
数据结构包括逻辑结构和物理结构两个层次。
逻辑结构
数据的逻辑结构有两个要素:数据元素、关系
数据逻辑结构层次关系图
物理结构
物理结构又叫存储结构,存储结构在计算机中主要分两中基本的存储结构:顺序存储结构和联是存储结构。
顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系,数据元素存放的地址是连续的;
链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系,数据元素存放的地址是否连续没有要求。
在C语言中,用一维数组表示顺序存储结构;用结构体类型表示链式存储结构。
数据的逻辑结构与存储结构密切相关
算法设计——〉逻辑结构
算法实现——〉存储结构
算法
算法:解决某一特定问题的具体步骤的描述,是指令的有限序列
算法特性:
有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义,不存在二义性。
可行性: 一个算法是能行的。
输入: 一个算法有零个或多个输入。
输出: 一个算法有一个或多个输出。
时间复杂度:
基本操作重复执行的次数的阶数 T(n)=O(f(n))
“O”的定义: 若f(n)是正整数n的一个函数,则 O(f(n))表示$ M≥0 ,使得当n ≥ n0时,| f(n) | ≤ M | f(n0) | 。
例如求下面的算法的时间复杂度:
for(i=2;i<=n;++i)
for(j=2;j<=i-1;++j)
{++x; a[i,j]=x; }
语句频度为: 1+2+3+…+n-2=(1+n-2) ×(n-2)/2 =(n-1)(n-2)/2 =n2-3n+2
所以时间复杂度为O(n2),即此算法的时间复杂度为平方阶。
空间复杂度:S(n)=O(f(n))
n为问题的规模(或大小)