算法初步知识点

算法初步知识点

ID:21917582

大小:59.00 KB

页数:23页

时间:2018-10-25

算法初步知识点_第1页
算法初步知识点_第2页
算法初步知识点_第3页
算法初步知识点_第4页
算法初步知识点_第5页
资源描述:

《算法初步知识点》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、算法初步知识点.txt10有了执著,生命旅程上的寂寞可以铺成一片蓝天;有了执著,孤单可以演绎成一排鸿雁;有了执著,欢乐可以绽放成满圆的鲜花。-----------------------Page1-----------------------6.3算法基础 前面,我们讨论了程序设计中关于数据组织的问题。对程序设计来说,另外一个重要的 问题是如何确定数据处理的流程,即确定解决问题的步骤。这就是算法问题。算法是一组确 定的解决问题的步骤。它和机器以及语言并无关系,但最终还是需要使用特定的语言加以实 现。 6.3.1算法的概念 算法是计算机科学特别是软件设计中最具研究性质的。在计算机

2、科学中,算法是研究适 合计算机程序实现问题解决的方法,因此它是许多计算机问题的核心研究对象。 一般认为,算法是一组明确的、可以执行的步骤的有序集合。“有序集合”说明算法中 的步骤是有顺序关系的。算法中的每一步骤还必须是“明确的”,模棱两可的步骤不能构成 算法。例如,“把变量x加上一个不太大的整数”。这里“不太大的整数”就很不明确。另外, 算法中的每一步骤还必须是“可执行的”。这里所说的可执行不是一定要能被计算机所直接 执行,即它不一定直接对应计算机的某个指令。但至少对阅读算法的人来说,相应步骤是有 效和可以实现的。例如,“列出所有的正整数”就是不可执行的(有无穷多的)。 当我们使用计

3、算机来解决问题的时候,有时会面临多种可能的解决途径。而选择不同的 解决途径可能会有不同的问题求解效率。如果是一个简单的问题,这种选择也许无关紧要; 但对大型问题,这种选择就是至关重要的。如果被设计的程序需要机器运行数年、或至少数 GB以上的内存,那就看不出这个程序还有什么意义。对于一些复杂的问题,例如对现实的 模拟过程,使用设计优良的算法使系统运行速度和性能得以成倍的提高是完全可能的。 所以,不管需要解决的问题是属于哪个应用领域,严谨的、合理的、高效的算法设计对 解决复杂问题是非常有意义的。 下面,我们来看一个简单的算法例子。 【例6.3】在一个从小到大顺序排好的整数序列中查找某一指

4、定的整数所在的位置。 这是一个查找问题。我们可以比较两种不同的查找方法。 [方法一]一种简单而直接的方法是按顺序查找,相应的查找步骤是: 1)查看第一个数。 2)若当前查看的数存在,则 若该数正是我们要找的数,则找到,查找过程结束; 若不是我们要找的数,继续查下一个数,重复2)步。 3)若当前查看的数不存在,则要找的数不在序列里,查找过程结束。 [方法二]二分查找法(或称折半查找法,binarysearch)。由于序列中的整数是从小到大 排列的,所以可以应用此方法。该方法的要点是,先比较序列中间位置的整数,如果与 要找的数一样,则找到;若比中间那个整数小,则只要用同样方法在前半个序列

5、中找就 可以了;否则,在后半个序列中找。相应查找步骤如下: 1)把含n个整数的有序序列设为待查序列S 2)若S不空,则取序列S中中间位置的整数,并设为middle。 若我们要找的数与middle一样,则找到,查找过程结束。 若我们要找的数小于middle,则将S设为middle之前的半段序列,重复2)。 若我们要找的数大于middle,则将S设为middle之后的半段序列,重复2)。 3)若S为空,则要找的数不在序列中,过程结束。 在上述两种方法中,顺序查找方法简单,但效率不高。一般来说,若整数序列中整数的 ·255· -----------------------Page2---

6、--------------------个数为n,即平均要找n/2次才找到(若该数在序列中)。而二分查找法虽然思路相对复杂, 但效率高。通过分析可以知道,若要查找的数在个数为n的序列中,二分查找法平均花log2(n) 次左右的比较就可以找到。当问题的规模(n)很大时,不同算法的效率就可以很明显地看 出来了。例如,当n为100万时,顺序查找平均要比较50万次左右,而二分查找平均用20 次就够了(log2(100万)≈20)。 算法的时间效率不仅与算法本身有关,而且与问题的规模有关。算法的时间效率与问题 规模的关系称为该算法的时间复杂性(timecomplexity)。例如,对于顺序查找

7、算法,一般我 们称其时间复杂性是问题规模的线性函数(与问题规模成正比增长),而二分查找法的时间 复杂性则是对数函数(log),因而它随问题规模变大而在算法时间的增长上并不是很快。 我们再来看一个数论方面的算法--计算最大公约数的欧几里德算法。该算法大概可以被 认为是最古老的算法之一了。 【例6.4】求两个数的最大公约数(Gcd),即可以同时整除这两个数的最大整数。例如 Gcd(50,15)=5。假设两个整数为m和n,并且有m大于n(如果n大于m,则交换m和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。