粗麦百科 网站地图

当前位置: 首页 常识

算法的特性有哪几点(算法的特征)

100人浏览   2024-09-23 10:23:08

今天我们来复习一下数据结构与算法的关系

上一节我们了解到数据结构的定义:是相互之间存在一种或多种特定关系的数据元素的集合。

一、什么是算法?

算法定义:描述解决问题的方法。这个描述很笼统,很多人一听可能迷迷糊糊的,不明所以。我们来看看其他的定义:算法是解题方案的准确而完整地描述,是一系列解决问题的清晰指令,并且每个操作表示一个或多个指令。这个定义是被普遍认可的,在计算机中,算法就一个多个制定的一序列的指令。

一个问题或数学题有多种解决方法,要让计算机实现一个操作需要指明需要计算机执行哪些指令,每一个指令要完成什么特定功能。比如宋丹丹老师的一个小品中的一个例子:请求把大象装进冰箱要几步。这个就是一个操作,那么他们的算法(指令)就是下面的求解步骤,把大象放进冰箱需要三步:

  • 1、把冰箱门打开
  • 2、把大象放进去
  • 3、把冰箱门关上

二、算法有哪些特性

算法具有五个特性:输入、输出、有穷性、确定性和可行性。

1、输入

算法的输入具有零个或多个输入。有人就有疑问了,零个输入怎么说,我们来举个例子,在java,刚开始学习时,一般都从在控制台打印学习开始:

System.out.print("Hello world");

在这里例子中,就没有输入的参数,我们来看看前面算法的定义:有限序列的操作,控制台打印操作是System.out.print,那么有人就有疑问了“Hello World”不就是一个输入参数吗?其他“Hello World”还真的不是输入一个参数,这个是算法另一个特征:输出

2、输出

在上面的“Hello World”例子中,我们看到了算法的输出,System.out.print,输出值是“Hello World”,算法是一定要有输出的,没有输出的算法是没有意义的,它可以是多种形态的输出方案,如上面的控制台打印输出,也可以返回一个或多个值等,没有输出的算法是没有意义的。

3、有穷性

有穷就是有限,在执行制定指令步骤后,自动结束而不会出现无限循环,并且每一个步骤在有限的时间内完成。在这里的有穷是我们一个项目中有穷非数学上的有穷。很多程序员在刚开始学习会老师都会提起过,写代码要认真点不要出现死循环,不要轻易使用循环while(true)操作,当然在实际应用有现实中的算法还是需要很长一段时间,比如数学界中圆周率到目前为主算了几十年都还没解决,未来需要多长时间才能结束,还是一个疑问,但不否定这也是一个数学界中算法。在计算中,我们实际做项目的时候,一个算法是不需要那么长的时间的,所以的项目中使用的算法,都有一个合理的,有边界的时间。你说你一个订餐系统,用户今天肚子饿了,想定个外卖,你提供的配送时间是一年,我还要等一年后才吃到这顿饭,这个就没多大意义了。

4、确定性

算法的确定性是指算法执行的每一步骤都具有确定的含义,不会出现二义性。在一定条件下,只有一条执行路径,相同的输入只能有唯一的输出结果(可描述的范围内)。0就是0,1就是1。不会出现是零非零,是一非一,让人模棱两可的算法。每个步骤必须要明确的定义。

5、可行性

算法的每个指令都是可行的,也就是说每一步骤都能执行有限次数后完成指令。可行性意味着算法指令转成计算机语言上完成指定的操作后输出结果。当然目前计算机研究领域及数学领域都存在一些 不能实现的算法,那些都过于复杂,不是我们现在讨论的问题范围内,我们讨论的是在互联网业务范围内,可得到结果的算法。

三、算法设计标准

在上面我们讲算法定义的时候,聊到过一个算法有多种解决方案,比如排序就有冒泡,快排等多种排序方案。

尽管算法有多种多样,但优秀的算法还是不少的,掌握好的算法,对我们解决问题是非常有帮助的,那什么样的算法才是好的算法,算法设计标准是什么呐:

1、正确性

优秀的算法最起码的要求是正确性,如果连正确性都达不到,那这个算法连对不对都谈不上,算法正确性是指算法在规定时间内,按照规定要求的输入,输出和加工处理无歧义,能准确反应问题的需求,能得到问题的正确答案

算法的“正确”通常会存在一些歧义,特别是在大家对答案没有标准的认知时,但大体上可以分为四个要求。

  • 语法语法正确,没有出现错误的语法,导致算法无法运行
  • 对于合法的输入参数能够输出符合要求的输出结果
  • 对于非法的输入参数能够符合要求的输出说明结果
  • 对于具有挑战性的测试数据也能够输出满足要求的输出结果

对于这四个要求,第一个要求是最容易的,如果一个算法连最基本的语法是否正确都做不到,那谈不上是优秀的算法了,其次是第二,第三,第四条。特别是第四条,我们几乎是无法全部验证所有的测试结果,这点只能交给数学方法来证明了,证明一个算法符合这四个要求,代价是很高的,所以我们有时会前三个作为验证一个算法是否正确的标准要求,那么一个正确的算法是否应该符合所有人来理解呐,这就涉及到算法的第二个标准:可读性

2、可读性

一个好的算法是便于阅读、理解和交流。假如一个算法晦涩难懂,那肯定不是一个便于曹啧啧啧的优秀算法。可读性高的算法,人们容易理解,大家都愿意去接受它。

我曾经带过几个团队,很少有程序员愿意写注释,写文档是程序员最排斥的工作,那问题就来,假如不写注释,那您的代码又难于阅读,一个类上千行,一个方案多达几百行,更有人一个复杂业务一个方法全部搞定,一千多行代码,十几个ifelse,看起来头都疼了。

我们写代码的目的是为了让计算机执行,但还有一个目的是便于他人阅读,因为您不可能在一个岗位干很久,这个代码也不可能一直是您来维护,那你的代码就必须让对接你的人便于阅读,自己将来也能看得懂你自己代码,想起网络一个段子,一个码农看到一个代码,大骂一顿:哇靠,这谁写的代码,一坨屎,仔细看一遍:哇靠,原来我自己写的。如果可读性不好的代码,时间长了,你自己都不知道写了是什么,先阶段,可读性是算法好坏的一个重要标注

3、健壮性

对于上面的讨论算法正确性的四个要求时,我们聊过第三个要求“对于非法的输入参数能够符合要求的输出说明结果”,我们大家都知道,对于一个问题,大家理解都不一定,对于问题提出的前提,大家理解也不一定,前提多了,很少有人能记得住全部前提,这里所说的前提与算法的输入有一定的关系,一个在跑的算法,有些用户或客户会经验会输入错误的参数,比如验证码,这时候我们的算法就得对于这些输出做出合理的提示,这就是这一节我们要讲的,一个好的算法需要具备健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。

4、时间效率高和存储量低

最后还有一点,那就是一个优秀的算法需要具备时间效率和存储量低的特点。

假如一个简单业务需求,一个算法需要耗时十几天二十天才是执行完,这显然不是很合理,我们当然会选择执行时间相对比较短的算法,存储量是指算法执行过程中需要占用的存储空间(这里需要说明内存、硬盘存储、CPU都要考虑),因为我们实际业务中,不可能只用到一个算法,需要多个算法同时运行,所以就需要存储空间小,执行时间段的算法,我们设计时就要考虑这两个问题:尽量满足时间效率高和存储量低的需求

综上,一个优秀的算法应该具备:正确性、可读性、健壮性、高效率和低存储量的特征


热门文章
  • 1八月十三是什么日子(军史上的今天|8月13日——淞沪会战)

    1937年8月13日淞沪会战爆发中日近百万军队血战淞沪战至最艰难阶段为掩护大部队撤离中国军队第88师262旅524团副团长谢晋元率400余孤军坚守四行仓库以寡敌众顽强抵抗四天四夜与此同时法国神父饶家驹设立南市难民区保护了大批中国难民为后来南京安全区的设立带来启发淞沪会战1937年8月13日至11月1

    2有关清明节的知识(“清明碰闰月,上坟三注意”要注意什么呢?)

    清明是传统的春祭节日,在清明扫墓祭祀、缅怀祖先,不仅有利于弘扬中华的孝道亲情,而且还能促进家族成员乃至民族的凝聚力和认同感,所以从古至今,清明节都是非常重要的一个节日。而今年的清明节和往年都不一样,因为今年清明处于闰二月,而在古人的认识中,闰二月属于一个霉运,在这个月做大部分的事情,都要格外注意,避

    3愉快假期朋友圈文案(“向生活请个假,周末愉快呀”)

    1²º²⁴/₁₁.₂₄ᴴᴬᵛᴱ ᴬ ᴳᴼᴼᴰ ᵀᴵᴹᴱ生活简简单单,日子温温柔柔,与万事言和,与独处相安,自行,自醒,自清,自爱,用好的心情去承揽今日好的运气。2²⁰²⁴/₁₁.₂₄♡Morning日子渺小重复,却很幸福。用心感受生活,心里有爱,每一天都是幸福的起点。3²⁰²⁴/₁₁.₂₄* ੈ✩‧

    4炒粉的家常做法,每个人都能学会

    海鲜炒粉干口味:★ ★ ★ ★ ★营养:★ ★ ★ ★★美感:★ ★ ★ ★ ★操作:★ ★ ★ ★ ☆配料:平阳粉干半扎、虾适量、墨鱼干适量、五花肉适量、胡萝卜适量、香菇7朵、包菜半个、鸡蛋1个、生抽一匙、白糖少许、盐适量、鸡精一匙、鲍鱼汁一匙烹饪步骤:1.虾去虾须清洗干净再去内脏(用虾干更好吃哦

    5煲鱼汤的做法大全(砂仁陈皮鲫鱼汤丨美食)

    为大家推荐一道靓汤:砂仁陈皮鲫鱼汤。原料:新鲜鲫鱼200克,砂仁3克,陈皮6克,生姜、葱、油、精盐适量。做法:1.将鲜鲫鱼刮去鳞、鳃,剖腹去内脏,用清水洗净,沥干水分待用。2.砂仁研末,塞入鱼腹内,用线缝合,置油锅慢火煎至两面微黄后放入砂锅。3.砂锅加适量水,大火烧开,放入陈皮、姜片、葱段,用文火炖

    6神司马懿技能介绍(三国杀神司马懿到底算不算四害?)

    在三国杀这个游戏里,除了魏蜀吴群四大势力之外,神这个势力就比较独特了。因为当玩家选出神势力武将之后,就可以自由选择魏蜀吴群四大势力。官方在当年设计这些神武将的时候,通常情况下也都是根据他们一生里最有名的事件或战役来设计对应的技能。比如说神赵云,长坂坡七进七出声名远扬,所以他的技能濒死和脱离濒死都能摸

    7五岳山在哪个省份(中国五岳是哪几座山?)

    ·一、东岳泰山。位于山东省泰安市,海拔1545米。古以来泰山就是中国文化的象征之一,被誉为"五岳之首"和"天下第一山",因其雄伟的气势和丰富的文化历史而闻名。泰山的自然景观包括奇峰、深谷、瀑布等,而人文景观则涵盖了岱庙、红门宫等古迹,展现了中华民族的精神象征。·二、西岳华山。位于陕西省渭南市华阴市,

    8上饶旅游必去十大景点(上饶旅游必打卡的十大景点)

    最值得去的十个旅游景区。说说上饶旅游必打卡的十大景点!1. 去灵山风景名胜区,体验瀑布王国的壮丽,感受大自然的鬼斧神工。2. 去三清山,登上道教名山之巅,感受云雾缭绕的仙境。3. 去龟峰,探秘奇峰怪石的世界,感受大自然的鬼斧神工。4. 去葛仙山,体验道教文化的博大精深,感受人间仙境的宁静祥和。5.

    9口味重,敌不过好处多!但这几类人吃了反伤身

    大蒜、洋葱、香葱等,是很多菜品中的“配角”,因其“独特”的味道,喜欢的人,不管烹调什么都喜欢加一点,但也有不少人对它们敬而远之~不过,小编想告诉大家,这些葱类蔬菜可不仅仅是菜肴中的调味品,甚至有研究称它们对降低某些癌症风险有好处。葱类食物,或能成为“防癌帮手”?洋葱、大葱、香葱、大蒜、韭菜、蒜苗都属

    10花卷馒头的做法大全(8款家常做法)

    一直很喜欢做各种花式馒头,但是太复杂的造型又来不了,所以花卷和简单的馒头倒是做了很多次,家人也都特别喜欢吃。女儿更是表示以后不要再买馒头花卷了,哈哈,这大概是“厨娘”听到的最好点评了。这里豆妈就分享几款自己经常做到的花式馒头和花卷的做法,希望能对爱吃馒头花卷的你有所启发。首先馒头和花卷都是需要发面的
最新推荐
  • 洋葱什么时候种植最好(洋葱的种植方法和时间)

    当然,我可以为您提供一些关于洋葱的种植方法和时间的信息,但由于篇幅限制,我将以简洁的方式为您总结。洋葱的种植方法和时间洋葱是一种常见的蔬菜,不仅为美食增色不少,还富含营养。它的种植方法相对容易,只需遵循正确的时间表和步骤。1. 时间选择: 洋葱适合在春季和秋季种植。在春季,通常在冷季结束后,气温回暖

    手串18颗代表什么意思(手串的个数有什么讲究?)

    手串珠子的个数在不同文化和传统中有不同的讲究,以下是一些常见的情况:佛教文化相关108 颗:这是最为常见的数目之一,在佛教中代表着断除 108 种烦恼,从而达到超凡入圣的境界。108 种烦恼一般是指六根(眼、耳、鼻、舌、身、意)各有苦、乐、舍三受,合为 18 种;又六根各有好、恶、平三种,合为 18

    为什么桂花叶尖干枯(春夏养桂花,牢记这四大“病害”)

    春夏养桂花记住这些病害就能让桂花顺利生长、开花爆盆,防止病害感染导致茶花越养越差,影响生长和开花。·第一种就是黑斑病。春天容易发生浇水过多、雨水充沛或者沤水沤湿,桂花的叶片就会出现发黄、发黑、有黑色斑点、腐烂这种黑斑病。·第二种就是炭疽病。高温期夏天容易滋生,叶片出现黑褐黄色三种颜色相间的干枯或者干

    冰箱为什么不能放热的东西(为了健康和安全,该把食物放凉了再进冰箱吗?)

    我们总有这样的时候,晚上肚子饿了,做好夜宵,可是最后吃剩下的饭菜直到睡前还没有完全冷下来;中午回家吃饭,吃剩的菜直到自己上班还没有冷下来等等,遇到这种情况,我们是否可以直接将热菜放进冰箱呢?答案是:不要犹豫,直接放入冰箱吧,而且趁热放进冰箱对抑制细菌可能更有用,因为可以使食物在“危险温度区间”存放时

    为什么家里不养莲花(这些花不能在家里养,养错了会让生活增加烦恼)

    鲜花能点缀我们的生活,绿叶能给房间带来色彩,每个人的房间里都会有各种各样的花,养花不仅能陶冶情操,还能放松我们的心情,让我们对生活充满着希望。养花虽然好处多,但不是所有的花都适合养在我们的室内房间,尤其是在我们睡觉的房间里,但大多数人都是把花放在阳台上,而阳台又和我们的卧室相连,也就是间接着在卧室一

    无线网为什么这么慢(为什么 WiFi 满格网络却很卡)

    WiFi信号满格但网络却很卡顿,存在以下几点可能致使的原因:·1.有多个设备同时连接到该WiFi,占用了大量带宽,导致网络拥堵。·2.路由器性能不足,无法处理大量的数据传输。·3.可能存在网络干扰,比如附近有其他同频段的WiFi信号或其他电子设备干扰。·4.上网设备自身问题,比如设备运行的程序过多等

    为什么要床垫(露营为啥一定要携带睡垫?)

    我们熟知的露营三件套,分别是帐篷,睡袋,睡垫,可见睡垫在露营过程中的重要性。不管是露营,登山,徒步,还是做别的,只要你要在户外搭帐篷过夜,那么你就需要睡垫。那么睡垫的作用是什么呢?东哥觉得主要有两点,1、保暖;2、防膈,户外的地面都是比较硬的,直接睡在地面上会非常不舒服,而睡垫就是我们在户外的床垫。

    为什么内开窗性能比外开窗性能好(内开窗和外开窗哪个好)

    装修时大部分户型都会涉及到封阳台装断桥铝或系统窗,那么此时你一定会面临这个选择——选内开窗还是外开窗?那么,内开窗和外开窗有什么区别?到底哪个好……作为过来人,这次我做给大家做一个全面细致的对比,供大家参考和交流:1.开关步骤对比:内开窗胜内开窗:直接打开,直接关闭。与外开相比,明显更为简单方便。外

    顶层房子为什么不好卖(为何聪明人都劝你别买顶楼?)

    为什么买房的时候,很多人都劝你别买顶楼呢?关于顶楼的一些坑,你又知道多少?其实,顶楼既有优点也有缺点,究竟如何选择,还是要看个人意愿,但对于我来说,顶楼的6个缺点,是我无论如何都难以接受的。话不多说,一起来看看吧~一、容易有漏水问题顶楼户型,尤其是一些老小区老房,漏水问题真的是屡见不鲜,没几年我就能

    建兰为什么不开花(建兰不开花的原因和解决方法)

    建兰为什么不开花,建兰是一种喜阴植物,植株的生长对光照的需求不高,但是不能长期将它放在阴暗的环境中,否则会导致植株发育不良,影响到植株的生长开花。养分是建兰生长的关键,植株的生长以及开花会消耗掉大量的养分,此时如果不能保证养分充裕,植株将无法正常的生长以及开花。一旦养分不足,则需要及时对其进行施肥,

网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 粗麦百科 琼ICP备2024032622号-16