算法分析基础引言

一通废话…哈哈哈哈:
编程一路,知识量相当庞大,所以需要我们不断地进行学习才能跟上时代的步伐。对于程序而言,相信大家很早就听说过这样的一个公式:程序 = 数据结构 + 算法;起初我还不明白为什么程序时数据结构和算法的结合,通过不断的学习,慢慢地我似乎明白了其中的道理。
程序不单单是一段代码的集合,它就好比我们写作文一样,它是有灵魂的,而程序的灵魂就是算法,相同的数据结构下,不同的算法可能使得程序有着天壤之别。只有将数据结构和算法灵活的使用,才能写出“优美的”程序和代码,就像武侠小说中的绝世高手,不仅外功强悍,内功心法同样出神入化,那样才能称得上是一位武林高手。今天开始,就来总结总结我在学习算法设计过程中的那些点点滴滴。

回归正题:
编程的目的就是使用计算机来解决问题,那么计算机解决问题的过程是什么呢?

计算机解决问题的基本步骤:

(1)问题分析:分析问题有什么假设,给出了什么信息,有什么作用,问题要求得到的结果是什么……
(2)建立数学模型:用计算机解决问题就必须选取合适的数学模型,选取合适的数学模型使得解决问题时事半功倍。
(3)算法设计与选择:选择什么样的解决办法,也就是算法来实现数学模型,并结合数据结构来解决问题。
(4)算法表示:确定算法后,对于复杂问题可以通过图形准确来表示算法,通常算法的表示方法有流程图,盒图,PAD图和伪代码等方法。
(5)算法分析:选择算法后,要对算法进行分析,在实现过程中要哦使用什么类型数据,数据如何存储等文图,以及算法的效率等问题。
(6)算法实现:通过上面我们选取的数学模型,数据类型,数据存储方式等等来实现算法,并考虑算法的开销。
(7)程测试及调试:解决问题算是实现了,但是程序的正确性和软件的缺陷还需要通过测试方面的手段对程序进行测试,以确保程序的正确性和健壮性。
(8)结果整理和程序文档编制:使得他人更好的理解程序,还需要进行程序注释,舒服那路程图,以及算法的证明,程序测试等过程的文档说明。

那算法到底是什么呢?

算法: 算法是指在解决问题时,按照某种特定步骤一定可以得到问题结果(有解时给出问题的解,无解时给出无解的结论)的处理过程。

算法的三要素:
(1)操作:算术运算,关系比较,逻辑运算,数据传输
(2)控制结构:顺序结构,选择结构,循环结构
(3)数据结构:算法操作对象是数据,数据间的逻辑关系,数据的存储方式以及数据的处理方式就是数据的数据结构。

算法的基本特征:
(1)有穷性:算法必须在执行有穷步后结束,需要在有限时间内完成。
(2)确定性:任何情况下,算法都只有一条执行路径,需要明确算法如何执行及含义。
(3)可行性:算法中的操作必须可以通过已经实现的基本操作有限次实现。
(4)算法必须有零个或多个输入:告诉执行者需要什么数据来解决问题。
(5)算法必须有一个或者多个输出:告诉执行者解决算法后的结果是什么。

那怎样评判算法的优良呢?
算法的质量指标:
(1)正确性:算法对于一切合法的输入都要有正确的输出结果;
(2)可读性:算法应当让人易于理解和进行调试;
(3)稳健性:算法在面对非法输入时应当考虑进行异常的处理,以便更高的抽象层次上进行处理;
(4)高效率与地存储量的需求:算法的执行时间要尽可能短,对于内存的消耗要尽可能低。

描述算法的两个重要指标:

时间复杂度:

与算法执行时间有关的因素:
1、问题中数据存储的数据结构;
2、算法采用的数学模型;
3、算法设计的策略;
4、问题的规模;
5、实现算法的程序设计语言;
6、编译算法产生的机器代码的质量;
7、计算机执行指令的速度。
算法时间效率的衡量方法:
1、事后分析法:先将算法用程序设计语言实现,然后度量程序的运行时间。
缺点:

  1. 必须先用程序设计语言实现算法,并执行算法才能进行判断算法的分析,这与算法的目的相违背
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值