数据结构(一)顺序表-一、概念

可以更合理使用内存
提高程序的执行效率

C语言本质是操作内存

数据对象、数据元素、数据项
图片

(一)数据结构的三元素

1. 逻辑结构

(1)线性结构

一对一的关系
数据连续

(2)非线性结构

树型:
一对多

图:
多对多

2. 存储结构

数据在计算机尤其是内存中的存储方式

(1)顺序存储
(2)链式存储
(3)索引存储

3. 运算

算法:有限步骤内解决问题的方法
算法不依赖于编程语言
特点:

  1. 有穷性
  2. 确定性
  3. 可行性
  4. 有0个或多个输入,有一个或多个输出

标准:

  1. 正确性
  2. 易读性
  3. 健壮性:对非法数据的处理能力
  4. 高效性
  5. 低存储

(二)时间复杂度

算法的时间复杂度定义为算法中可执行语句的频度之和 记作 T(n)
语句频度是指同一代码执行的次数
T(n)是算法所需时间的一种估值,n 表示问题的规模

算法的时间复杂度的表示方式为:
O(频度); ----------称为 大 O 表示法

假设有三段代码:
a 的时间复杂度为 2
b 的时间复杂度为 2n
c 的时间复杂度为2n^2
如果a、b、c组成一段程序,
那么算法的时间复杂度为
T(n) =T (2+2n+2n^2)
业内表示方法 还需T (2+2n+2n^2)要对进行简化

使用大O表示法的简化流程:
1.去掉运行时间中的所有常数项。
(例如 2+2n+2n^2,直接变为 2n+2n^2)
2.保留最高次幂项。
(2n^2+2n 变成 2n^2)
3.最高项存在但是系数不是1,则把系数置为1。
(2n^2 系数为2 去掉系数 n^2 )

所以,最终a、b和c合并而成的代码的时间复杂度为O(n^2)。

1. 线性阶

O(n)

2. 常数阶

O(1)

3. 平方阶

O(n^2)

4. 三次方阶

O(n^3)

5. 对数阶

O(logn)

6. 时间复杂度排序

O(1)< O(logn) < O(n) < O(nlogn) < O(n^2) <O(n^3) <O(2^n) <O(n!) < O(n^n)

可以带一个数测试,如问题规模n是16
1 < 4 < 16 < 64 < 256 < 4096 < 65536 < 16! < 16^16

上一篇:Element-UI 快速入门指南


下一篇:搜维尔科技:穿上Xsens Link动作捕捉套装,进行精准的运动捕捉