《算法设计与分析》第1章 算法基础

前言

算法是计算机科学的基石
算法:计算的灵魂
程序=算法+数据结构
学习算法可以提高分析问题的能力

例题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1算法

1.算法的定义

算法指问题求解的方法及求解过程的描述,是一个精心设计的计算序列,用以解决一类特定的问题。

2.算法的性质和设计原则

1)有穷性:一个算法必须能在执行有限步骤之 后终止,且每一步都在 有穷时间内完成。
2)确定性:算法中的每一条指令必须有 确切的含 义,对于相同的输入只能得到相同的输出。
3)可行性:算法描述的操作都必须足够基本,都可以通过已经实现的基本操作执行有 限次来实现。
4)有输入:一个算法有零个或多个输入。
5)有输出:一个算法有一个或多个输出。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.算法的表示

自然语言、程序流程图、N-S图、程序设计语言(如C语言)、伪代码等。

4.算法举例

在这里插入图片描述

5.程序

程序是用某种程序设计语言对算法的具体实现。
史上第一次编写程序是Ada Byron于1842年为巴贝奇分析机编写求解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一 位程序员。

6.冒泡排序

(1)自然语言
两两相比
逆序交换
(2)伪代码
在这里插入图片描述
(3)程序描述
在这里插入图片描述

1.2算法分析

在这里插入图片描述
在这里插入图片描述

  • 算法分析是对一个算法所需的计算资源(时间、空间、通信等)进行预测。
  • 算法复杂度 = 时间和空间资源 (+通信带宽)
    算法的时间复杂度(所需时间资源)T(n);
    算法的空间复杂度(所需空间资源)S(n)。
    其中 n 是问题的规模(输入大小)。
  • 注:不特别说明情况下,对算法只分析时间复杂度。

1.算法分析的基本法则
(1)for/while 循环:循环体内计算时间×循环次数;
(2)嵌套循环:循环体内计算时间×所有循环 次数;
(3)顺序语句:各语句计算时间相加;
(4)if-else语句:if语句计算时间和else语句计算时间的较大者。
2.冒泡排序算法分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.不同情况下的算法时间复杂度
在这里插入图片描述
1.算法分析的基本法则
在这里插入图片描述
在这里插入图片描述

1.3算法的运行时间

1.算法渐近复杂度

在这里插入图片描述

2.渐近表示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.算法分析中常见的复杂性函数

在这里插入图片描述
在这里插入图片描述

4.算法分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朋友叫我小马

不需要打赏哟!谢谢阅读!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值