数据结构(2)算法

本文介绍了算法的特性,包括输入输出、有穷性、确定性和可行性,并强调了算法的正确性、可读性和健壮性。重点讨论了算法效率的度量方法,如事后统计和事前分析估算,以及时间复杂度和空间复杂度的概念。通过实例分析,阐述了如何推导大O阶,并列举了不同时间复杂度的典型例子。最后,提到了最坏情况和平均情况下的运行时间分析。
摘要由CSDN通过智能技术生成

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

现实世界中问题千奇百怪,算法千变万化,没有通用算法可以解决所有问题。

为了解决某个或某一类问题,需要把指令表示成一定的操作序列,操作序列包含一组操作,每个操作完成特定的功能。

算法的特性输入、输出、有穷性、确定性、可行性。

输入输出:
输入可以是零个或多个,虽然对绝大多数算法,输入参数是必要的,但是个别情况不需要参数,比如打印“hello world”这样的代码不需要任何参数
输出必须是一个或者多个,要不然这个算法没意义了,肯定是要输出的。(输出的形式可以是打印输出,也可以是返回一个值或者多个值)

**有穷性:
**指算法在执行有限步骤后自动结束而不是无限循环,并且要在一个可接受的时间范围内。(要在实际应用中合理有边界)

确定性:
算法的每一步都有确定的含义,不会出现二义性。在一定条件下只有一条执行路径,相同的输入只能有唯一结果(类似函数,一对多,不同的输入可以输出的一样,但是同一个输入输出是固定的)

可行性:
每一步都要可行,每一步都能通过执行有限次数完成。意味着可以上机运行,并得到正确结果。

算法设计的要求
算法并不唯一,解决问题的办法有很多很多种。

正确性: 算法的正确性是指算法至少应当具有输入、输出以及加工处理无歧义性,能正确反映问题的需求、能够得到问题的正确答案。

正确包含四个层次:
1、算法程序没有语法错误。(最基本的要求)
2、算法程序对于合法的输入数据能够产生满足要求的输出结果。
3、算法程序对于非法的输入数据能够得出满足规格说明的结果。
4、算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果。(最困难,经得起测试的算法)

算法的正确性大部分情况下都不可能用程序来证明,都是用数学方法证明。证明一个算法第四条代价太大,所以我们把层次三作为算法是否正确的标准。

好算法还有一点,可读性。

可读性
算法方便阅读、理解、交流。
晦涩难懂的算法往往隐含错误,不易被发现,并且难于调试和修改。
写代码不仅给计算机看,更是给人看的,所以一定要可读。

健壮性
输入数据不合法也可以处理,而不是产生异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值