南信大计算思维导论(第四章 算法思维)

本章内容针对于编程语言(考试不做重点)

4.1.  算法的定义:算法是指解决问题的方法和步骤。利用计算机算法为计算机的解题的过程实际上是在实施某种算法。

4.2.  算法的基本特征:可行性、确定性、有穷性、拥有足够的输入(情况)

(1)可行性:算法中有待执行的运算和操作必须是相当基本的,即它们都是能够精确地进行的。

(2)确定性:算法的每一个步骤必须有确切的定义。

(3)有穷性:一个算法在执行有穷步后必须结束,即一个算法包含的计算步骤是有限的。

(4)拥有足够的输入(情报):一个算法是否有效,取决于为算法提供的输入信息和初始化信息是否足够。       

4.3.  算法的表示:(1)自然语言表示法;(2)流程图(包含顺序结构、循坏结构、选择结构);(3)伪代码(是介于自然语言和计算机语言之间的文字和符号来描述算法,使用伪代码的 目的是是被描述的算法可被任何一种编程语言实现)

4.4.  算法分析

(1)算法的时间复杂度:指执行算法所需要的计算工作量。算法的计算工作量是用算法所执行的基本运算次数来度量的,他用T(n)表示,其中n表示问题规模的大小。

(2)算法的空间复杂度:是度量空间的复杂性,即执行算法所需要内存空间的大小。算法所占用的空间包括算法程序所占的空间、输入初始数据所占的空间以及算法执行过程中所需要的额额外空间。   

4.5.  常用算法概述

4.5.1.  查找算法 

(1)顺序查找;(2)二分法查找;

4.5.2.  排序算法

(1)冒泡排序;(2)快速排序;(3)插入排序;(4)希尔排序;(5)直接选择排序;(6)堆排序;

4.6.  算法设计与分析

4.6.1.  问题分析:

(1)问题建模:分析需要解决问题的现有特征,抽象出问题的一般或内在规律,再建立现实问题的数学模型;

(2)算法的输入与输出:对问题建模后要分析算法需要哪些输入数据。同时需要搞清楚算法运行之后,需要怎么样的输出;

(3)算法的编程及分析:确定用什么样的语言将数学模型转为计算机识别的语言。当得到运行结果时,需要对算法的性能进行分析,主要包括算法的时间复杂性和空间复杂性,从为进一步优化算法,提高算法的实效性;

4.6.2.  常用的算法设计策略

(1)分治法:将一个复杂的问题分成多个相同或相似的子问题,再将子问题分解为更小的子问题知道问题可以被直接求解,而原问题可通过子问题的解合并得到;

(2)动态规划:基本思想与分治法的类似,也需要将原问题分解。与分治法不同的是,适用于动态规划求解的问题,经分解的子问题往往不是相互独立的,并且最终问题的答案均写在表上;

(3)贪心算法:指在针对问题时,不从整体最优上加以考虑,而是做出当前来看是最好的选择,即在某种意义上的局部最优解。主要包含两个要素:贪心选择(指所求问题的整体最优解由通过一系列局部最优的选择得到)和最优子结构(当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质);

(4)回溯法:又称试探法。即按选优条件向前搜索,以达到目标。但当探索到某一步时,如发现选择不优或不达目标时,就退回一步重新选择,循环往复,直至找到最优解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值