第一章
1.数据元素——>基本单位
2.数据项——最小单位(用来描述数据对象)
3.数据对象
( 1. )性质相同
(2.)都是元素
4.数据结构(D.S)
( 1. )逻辑结构
1.)线性结构(一对一):线性表,栈(顺序栈和循环栈),队列,广义表,数组,串
2.)非线性结构:树,图,集合
(2.)存储结构(即物理结构,依赖于计算机)
1.)顺序存储:将逻辑相邻的元素存储在物理位置(即相邻/邻接的存储单元)
实现方式:数组(常用)
优点:随机存储,时间复杂度为O(1)
缺点:增或删需要移动元素,不利于插入和删除
2.)链式存储:节点间的逻辑关系通过指针域来链接(物理位置可不连续)
优点:方便插入和删除
缺点:存储密度小,每个节点都有指针域,要顺序访问,比较费时间
3.)索引存储
优点:利用节点索引来检索,速度快
缺点:增加索引表后,会占用较多的存储空间
4.)散列存储
(3.)数据运算
5.D:对象 S:关系 P:操作 ——>定义了数据结构
6.算法:描述,有限,序列
特性:有确定性,可输出
要求:正确性,可行性,健壮性、高效率、低存储
7.(1.)时间复杂度:问题规模决(简单理解为代码运行的复杂度,影响的规模)定时间复杂度,初始状态
公式:T(n)=O(f(n))
(2.)频度:代码运行的次数
(3.)大小比较:O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < { O(2^n) < O(n!) <O(n^n) }
(4)空间复杂度:S(n)=O(f(n))
(补充例子:2个不同的算法执行结果一致,用的空间越少的那个越优,存储量越少越优)
函数:最大项,系数
循环:++;- -;i=i*a;多个函数相乘
以下为补充内容,帮助理解代码:
1、基本操作的算法都用以下形式的函数描述
函数类型 函数名(函数参数表){
//算法说明
语句序列
}//函数名
2、 赋值语句有:
(1)简单赋值:
变量名=表达式;
(2)串联赋值:
变量名1=变量名2=......变量名k=表达式;
(3)成组赋值:
变量名1,.....,变量名k=(表达式1,.....,表达式k);
结构名=结构名;
结构名=(值1,......,值k);
变量名 [ ]=表达式;
变量名 [起始下标..终止下标 ]=变量名[ 起始下标..终止下标 ];
(4)交换赋值:
变量名<---->变量名;
(5)条件赋值:
变量名=条件表达式?表达式T :表达式F;
3、选择语句有
1)条件语句1 if (表达式) 语句;
条件语句2 if (表达式) 语句;
else 语句;
开关语句1 switch (表达式){
Case 值1:语句序列1; break;
......
Case 值n:语句序列n; break;
default: 语句序列n+1;
}
开关语句2 switch (表达式){
Case 值1:语句序列1; break;
......
Case 值n:语句序列n; break;
default: 语句序列n+1;
}