一、数据的概念
1、数据的结构
数据的最小单位是(数据项)
抽象数据类型是一个完整的(数据结构)
顺序表、单链表、哈希表属于(数据结构)——同时包括逻辑结构、存储结构和数据运算
循环队列属于(数据结构)——顺序表表示的队列
2、数据的逻辑结构
数据的逻辑结构包括(线性结构)和(非线性结构)
线性结构包括(线性表、栈、队列、串、数组和广义表)
非线性结构包括(树、图、集合)
有序表属于(逻辑结构)——关键字有序的顺序表,可以顺序存储也可以链式存储,仅描述逻辑关系
3、数据的存储结构
数据的存储结构有(顺序存储)、(链式存储)、(索引存储)、(散列存储)。
顺序存储仅存储数据元素,存储密度高,逻辑相邻物理也相邻
链式存储存储指针占用额外空间,物理不相邻
索引存储存储索引表占用空间,检索速度快
散列存储可能发生冲突
顺序存储采用(随机存取)方式
链式存储采用(顺序存取)方式
栈、线性表均可采用(顺序存储)或(链式存储)
链式存储设计时,不同节点的存储空间可以(不连续),但是节点内的存储单元地址(一定连续)
二、算法
时间复杂度排序
O
(
1
)
<
O
(
log
2
n
)
<
O
(
n
)
<
O
(
n
log
2
n
)
<
O
(
n
2
)
<
O
(
n
3
)
<
O
(
2
n
)
<
O
(
n
!
)
<
O
(
n
n
)
O(1)<O(\log_{2}n)<O(n)<O(n\log_{2}n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
某算法的时间复杂度是
O
(
n
2
)
\ O(n^2)
O(n2),则表明该算法执行的时间与
n
2
\ n^2
n2成正比,问题的规模与n成正比。
算法需满足五大特性:有穷性、确定性、可行性、输入、输出
下面算法的时间复杂度是O(n)——本质为n的阶乘
int fact(int n){
if(n = 1) return 1;
return n*fact(n-1);
}