逻辑结构与存储结构
逻辑结构
存储结构
存储结构包括顺序存储、链式存储、索引存储、散列存储。
时间复杂度和空间复杂度
算法定义:对特定问题求解步骤的描述。
算法特征:有穷、确定、可行、输入、输出。
时间复杂度
时间复杂度指算法中所有语句的频度(执行次数)之和。记为:
T(n)=O(f(n))
其中,n是问题的规模;f(n)是问题规模n的某个函数。
表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
常见的时间复杂度
0
(
1
)
<
O
(
l
o
g
z
n
)
<
O
(
n
)
<
O
(
n
l
o
g
z
n
)
<
O
(
n
2
)
<
O
(
n
3
)
<
O
(
2
n
)
<
O
(
n
!
)
\color{#FF0000}{0(1)< O(logzn)< O(n) < O(nlogzn) < O(n2) < O(n3) < O(2n) < O(n!)}
0(1)<O(logzn)<O(n)<O(nlogzn)<O(n2)<O(n3)<O(2n)<O(n!)最高阶数越小,说明算法的时间性能越好
时间复杂度计算忽略高阶项系数和低阶项系数。
空间复杂度
空间复杂度S(n)指算法运行过程中所使用的辅助空间的大小。记为:
S(n)=O(f(n)
- 除了需要存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。
- 若输入数据所占空间只取决于问题本身,和算法无关,这样只需分析该算法在实现时所需的辅助单元即可。
- 算法原地工作是指算法所需的辅助空间是常量,即O(1)。