数据结构复习 0x0 基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/88389564

逻辑结构与物理结构

逻辑结构:集合结构、线性结构、树形结构、图形结构

物理结构:顺序存储结构、链式存储结构

数据类型:一组性质相同的值的集合及定义在此集合上的一些操作的总称。

抽象数据类型(ADT,Abstract Data Type):是指一个数学模型及定义在该模型上的一组操作。

算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的特性:输入,输出,有穷性,确定性和可行性。

算法设计的要求:正确性,可读性,健壮性,时间效率高和存储量低。

算法时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记做:T(n)=O(f(n))。他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。

推导大O阶:

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项相乘的常数。

得到的结果就是大O阶。

常见时间复杂度:

执行次数函数

非正式术语

12

O(1)

常数阶

2n+3

O(n)

线性阶

3n^2+2n+1

O(n^2)

平方阶

5log2n+20

O(logn)

对数阶

2n+3nlog2n

O(nlogn)

nlogn阶

6n^3+2n^2+3n+4

O(n^3)

立方阶

2^n

O(2^n)

指数阶

常用的时间复杂度所耗费的时间从小到大:

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

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/88389564