算法及其设计原则

算法及其设计原则

何谓"算法"?

算法是对问题求解过程的一种描述,是为解决一个或一类问题给出的一个确定的、有限长的操作序列。严格说来,一个算法必须满足以下五个重要特性:

(1) 有穷性 对于任意一组合法的输入值,在执行有穷步骤之后一定能结束。

(2) 确定性 对于每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。

(3) 可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。

(4) 有输入 作为算法加工对象的量值,通常体现为算法中的一组变量。但有些算法的字面上可以没有输入,实际上已被嵌入算法之中。

(5) 有输出 它是一组与"输入"有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。

在设计算法时,通常应考虑以下原则:首先说设计的算法必须是"正确的",其次应有很好的"可读性",还必须具有"健壮性",最后应考虑所设计的算法具有"高效率与低存储量"。

所谓算法是正确的,除了应该满足算法说明中写明的"功能"之外,应对各组典型的带有苛刻条件的输入数据得出正确的结果。在算法是正确的前提下,算法的可读性是摆在第一位的,这在当今大型软件需要多人合作完成的环境下是换重要的,另一方面,晦涩难读的程序易于隐藏错误而难以调试。算法的效率指的是算法的执行时间,算法的存储量指的是算法执行过程中所需最大存储空间。

算法是程序设计的另一个不可缺的要素,因此在讨论数据结构的同时免不了要讨论相应的算法。这里有两重意思,即算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成。确定性表现在对算法中每一步的描述都没有二义性,只要输入相同,初始状态相同,则无论执行多少遍,所得结果都应该相同。

可行性指的是,序列中的每个操作都是可以简单完成的,其本身不存在算法问题,例如,"求x和y的公因子"就不够基本。

输入值即为算法的操作对象,但操作的对象也可以由算法自身生成,如"求100以内的素数",操作对象是自然数列,可以由变量逐个增1生成。

算法的健壮性指的是,算法应对非法输入的数据作出恰当反映或进行相应处理,一般情况下,应向调用它的函数返回一个表示错误或错误性质的值。

相关阅读

联机游戏有哪些好玩 好玩的联机游戏盘点
足球比分365cv

联机游戏有哪些好玩 好玩的联机游戏盘点

🕒 07-03 👁️‍🗨️ 122
喜马拉雅
足球比分365cv

喜马拉雅

🕒 06-28 👁️‍🗨️ 7400
王者回归 漫步者R1600T08音箱评测
365bet亚洲投注

王者回归 漫步者R1600T08音箱评测

🕒 07-06 👁️‍🗨️ 4126
【PDP架子鼓怎么样】PDP架子鼓推荐测评_PDP旗舰店
足球比分365cv

【PDP架子鼓怎么样】PDP架子鼓推荐测评_PDP旗舰店

🕒 07-28 👁️‍🗨️ 428
「梦幻西游」69普陀能加多少血
足球比分365cv

「梦幻西游」69普陀能加多少血

🕒 07-04 👁️‍🗨️ 3996
等我先看会书《如何与傻逼相处》 可爱青蛙玩偶看书,配文“等我先看会书”,幽默回应如何与傻逼相处表情包图片gif动图
联通手机号网上过户全攻略:手把手教你足不出户完成过户,安全又省心!
山东矿难中,那个不吃不喝撑过15天的男人,一句话让人泪奔…
你们的365还进得去吗

山东矿难中,那个不吃不喝撑过15天的男人,一句话让人泪奔…

🕒 07-26 👁️‍🗨️ 7268
如何在线免费提取音乐伴奏
365bet亚洲投注

如何在线免费提取音乐伴奏

🕒 08-10 👁️‍🗨️ 9475