数据结构学习02——算法和算法分析

目录

一、定义和特性

1.算法的定义

2.算法的特性

二、算法的描述

三、算法与程序

四、算法的时间复杂度

1.算法时间效率的度量

2.语句频度和运行时间

3.算法的时间复杂度定义

4.时间复杂度计算

 五、算法的空间复杂度


一、定义和特性

1.算法的定义

 对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。

2.算法的特性

①有穷性:执行有穷步,且每一步都在有穷时间内完成。

②确定性:每一条指令都有确切的含义,无二义性。

③可行性:算法是可执行的。

④输入:一个算法有零个或多个输入。

⑤输出:一个算法有一个或多个输出。

二、算法的描述

①自然语言

②流程图

③伪代码、类语言

④程序代码

三、算法与程序

程序=数据结构+算法

数据结构通过算法实现操作,算法根据数据结构设计程序。

四、算法的时间复杂度

1.算法时间效率的度量

用执行所消耗的时间来度量。

两种度量方法:事后统计、事前分析。

2.语句频度和运行时间

语句频度:一条语句重复执行次数。

算法运行时间:每条语句执行次数之和×该语句执行一次所需要的时间

3.算法的时间复杂度定义

算法中基本语句重复执行的次数是问题规模n的某个函数f(n)时,

算法的时间量度记作:T(n)=O(f(n)),它表示随着n的增大,算法执行的时间增长率和f(n)的增长率相同,称作渐近时间复杂度,简称时间复杂度。由嵌套最深层语句的频度所决定。

n越大,算法的执行时间越长。

①排序:n为记录数

②矩阵:n为矩阵的阶数

③多项式:n为多项式的项数

④集合:n为元素个数

⑤树:n为树的结点个数

⑥图:n为图的顶点数或边数

例题分析:

i=1;

while(i<=n)

   i=i*2

·若执行1次:i=i*2=2

·若执行2次:i=2*2=2的平方

·若执行3次:i=2的平方*2=2的三方

·若执行x次:i=2的x次方

设语句执行x次,由循环条件:i<=n, 所以:2的x次方<=n, 所以x<=log2(n)

即f(n)<=log2(n),取最大值f(n)=log2(n),则时间复杂度T(n)=O(log2(n))

4.时间复杂度计算

最好情况:1次

最坏情况:n次

平均时间复杂度:O(n)

①加法法则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

②乘法法则:T(n)=T1(n)×T2(n)=O(f(n))×O(g(n))=O(f(n)×g(n))

T(n)按数量级递增顺序:

 五、算法的空间复杂度

S(n)=O(f(n))

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值