数据结构基本概念及复杂度分析

2016-12-13  本文已影响55人  学不好语文的LJ码农

以下内容整理自互联网,仅用于个人学习


1. 数据结构基本概念

数据结构三要素:

  • 顺序存储: 把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系关系来体现。优点是可以实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一款存储单元,因此可能产生较多的外部碎片。

2. 复杂度分析

2.1 算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,算法还具有下列5个重要特性:

  • 有穷性:一个算法必须总是(对于任何合理的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

2.2 时间复杂度

将算法中所有语句被重复执行的次数之和记作T(n),时间复杂度主要是分析T(n)的数量级。记作O(f(n))。假设f(n)=an3+bn2+c*n则O(f(n))=O(n^3) 看一个例子,假设需要从数组A[0···n-1]中查找值K位置,算法大致如下:

i=n-1; 
while(i>0&&A[i]!=k){ 
    i--; 
} 
return i;

此算法的复杂度不仅与问题规模n有关,还与输入实例中A的各元素取值以及K的取值有关:

  • 如果A中没有与K相等的元素,则第2行代码执行次数为f(n)=n

一般总是考虑最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。 分析算法复杂度时,有以下两条规则:

  • 加法规则:O(f(n))+O(g(n))=O(max(f(n),g(n))

常见的时间复杂度大小关系:

O(1) < O(log2n)< O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

2.3 空间复杂度

空间复杂度为算法所耗费的存储空间,除了存放本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和辅助空间,他是问题规模n的函数。 算法原地工作:是指算法所需辅助空间是常量,即O(1)

上一篇 下一篇

猜你喜欢

热点阅读