粗麦百科 网站地图

当前位置: 首页 常识

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

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款家常做法)

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

    很多小伙伴不明白流量卡虚量到底是什么意思?是所有的流量卡都会虚量吗?如何辨别是否虚量呢?下面我就给大家解答一下首先大家要了解虚量的意思,虚量指的是:显示消耗量与实际使用流量不相符!如果是使用安卓手机的小伙伴,大部分手机都带流量监视软件,可以展示我们使用了多少流量,小伙伴们感觉到了虚量就是手机自带的流

    什么是月息和年息(贷款这些名词最好了解一下!)

    厘事实上,人民币单位:元、角、分、厘,月利率7厘是指每一元人民币一个月的利息为7厘钱,因为一元钱为1000厘钱所以银行贷款利率7厘是指月利率千分之七。折合成年利率为0.7%*12=8.4%。民间利息X分、年化利率通常民间借贷中,一分利就是指年利率12%,假如您贷款50000元,小额贷款公司月利率为一

    信用卡和银行卡有什么区别吗(从六方面对比信用卡和储蓄卡)

    下面就教大家一些常见的辨别信用卡和储蓄卡的常用方法:1.信用卡正面印有有效期和持卡人姓名的拼音,而储蓄卡没有。2.信用卡卡号都是凸印的,储蓄卡卡号通常是平面印刷。3.信用卡背面印有7位数字号码,而储蓄卡没有。4.信用卡的背面,有“此卡签名后方可有效”或类似字样,储蓄卡的背面只有“持卡人签名”字样。5

    地板瓷为什么渗脏(为什么你家的瓷砖总是显脏?)

    瓷砖选错,家务翻倍!刚拖完地,瓷砖上却总浮着一层灰蒙蒙的印子?明明买了“耐脏色”,结果头发丝、水渍反而更扎眼?甚至花大价钱铺的砖,邻居却问“是不是出租房同款”?别急着怀疑自己的审美,90%的瓷砖显脏问题,其实从你走进建材市场时就注定了!作为从业10年的装修老司机,今天掏心窝子分享一套“傻瓜式选砖法”

    木地板为什么感到舒服(客厅铺木地板,真是舒服美观)

    很多屋主在新房装修的时候,会考虑在卧室铺木地板,但是客厅地面装修的时候,常常会纠结客厅到底铺不铺木地板,担心防水性差、容易起拱缩缝、难以打理?美观客厅作为家中会客、观影和休闲的场所,是适合一家人相处的空间。客厅铺装木地板,有以下几个好处:1.风格百搭:木地板能够搭配多种百变的家居风格,让更整体家装风

    什么植物最好养活夏天(适合夏天养的绿色植物!)

    夏天就要到了,气温越来越高,很多植物的生长陷入了停滞,进入了休眠,这让很多喜欢养花的人苦恼不已。其实有些植物非常适合夏天养,不但颜值高,生命力强还能驱蚊。下面推荐6种适合夏天养的驱蚊植物,把它们养好能做到一举多得!会提高自己的生活质量,也能美化家居。一、七里香七里香是一种既能观花又能观叶的美丽植物,

    甩干桶为什么甩不干(洗衣机脱水甩不干怎么回事)

    洗衣机脱水不干。洗衣机脱水不干可能有以下原因:·脱水转速选择不当。洗衣机的脱水转速通常是根据衣物种类和质地而设定的。如果选择低于所需的脱水转速会导致衣物过于湿润甚至没有干燥。如果选择高于所需的脱水转速可能会损坏衣物纤维或变形。·衣物放置不均匀。如果衣物堆积在一起或者不平衡地分布在鼓中,洗衣机就无法进

    霓虹灯是什么灯条(LED霓虹灯发光字)

    产品说明PRODUCT MANUALLED霓虹灯发光字是一种新型发光字。与传统霓虹灯字相比,它更亮、更实用、更安全。霓虹灯字是由底板、LED灯带和硅胶条组成。底板多为亚克力、PVC,灯带颜色可选择。常用于咖啡厅、服装店、餐厅、室内装饰等。适用范围PRODUCT APPLICATION商场、专卖店展柜

    退税是什么意思简单点(究竟什么是退税?)

    究竟什么是退税?退税,顾名思义,是指纳税人在符合规定的条件下,可以向国家申请返还部分已缴纳的税款。在很多国家,退税通常指的是旅行者在境外购物后,可以在离境时向海关申请退还部分消费税。退税制度作为一种激励措施,可以促进消费,吸引更多的国际游客和购物者。不同国家和地区的退税规定及操作方式有所不同。一般情

    养花为什么要换盆(6种花赶紧换盆,土都吃完了)

    6种花赶紧换盆,土都吃完了,再不换就饿死!培养花卉亦应如同悉心照料幼儿一般,需留心呵护并适时为它们提供新的栖息地。随着春季的临近,植物们似被注入了活力,生长势头强劲,甚至耗尽了花盆中所有的土壤,迫切需要更加宽敞的居所以充分吸收营养,否则可能会因营养不良而衰弱。风雨兰风雨兰作为一种普遍的观赏植物,拥有

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