数据结构与算法1-算法的特性

目录

算法的特性

有穷性 

确定性

可行性

有输入

有输出

设计原则

正确性

可读性

健壮性

高效率

低消耗

算法评价指标


算法的特性

在开始真正接触算法之前,我们需要先知道算法有哪些特性,这些特性不需要记,不需要背,你会说不出来,但,这些特性却会完美的体现在你的编码里。

有穷性 

指的是我们写出来的程序,我们写出来的算法,是能够执行完的,不是说是一个死循环,永远执行不完

确定性

指的是一定会有一个结果,一定会有一个确定的结果

可行性

这个就如同字面意思,写的这个程序,这个算法,是可行的,你要是不可行,写了有什么用,你说对吧~

有输入

这个,就相当贴切了,你写的程序,你写的算法,得有输入吧,你不能凭空就能跑吧

有输出

至于这个么,上面都说了,有输入,那你经过了一系列的运算,你总得有输出吧,不然你把我的数据吃了?

设计原则

上面说完了特性,当然就会有设计原则,任何程序,任何事情的开始,都一定有一个标准,算法也是一样的

正确性

这个不用我强调叭?我们写的程序啊,算法啊,都是为了解决问题的,那首先肯定是得正确,不然就得改,重写,对于问题来说,没法解决的程序,就是垃圾,没有任何用途,你不能说我用你写的代码,我卡卡的编译都过不去,或者启动还没跑呢就给我报错了,这是不是不得行

可读性

这个你看到的时候,可能会下意识的 ‘切’ 一声,然后缓缓的鄙视本楼主:‘喵的,锤子的可读性,只要能解决问题就行,只要老子写的舒服就行’

介个,老实说,可读性这个不属于硬性要求,虽说有什么开发手册啊,开发规范啊,但是,你就算写的任何人都读不懂,也不影响使用

但是!注意啊,但是来了,说明有别的

写的那么反人类,谁都看不懂,你确定你自己过一段时间能看懂?万一有修改呢?程序算法这玩意修修补补的,很正常对吧,再者说了,你写的反人类的,谁都看不懂,别人怎么接

呐呐呐,你可能会说这你都不关心,那你想想,你写的好了,自己看起来不爽吗?耶?这是我写的代码吗,帅啊,真是和我本人一样帅,如果你写的可读性很好,还可能被拉去大家都能看到,向你学习,你可能因此收获无数小迷妹,小迷弟,有可能突然就被哪个大机构大组织看上了,高薪聘请你去工作,这不香么,你的代码就是源码级别的玩意,倍儿有成就感对不对!

健壮性

至于这个健壮性吧,就是说,BUG少一点,问题少一点,那不能一会一个BUG,一会一个BUG,这个感觉你自己体会.......

高效率

这个高效率吧,直白一点,你的程序快一点,那不能我让你算个1+1等于几,好么,你给我算了一个小时,我上去就是几个大耳帖子

低消耗

这一点你可能会笑,你可能会说,啊,我们服务器内存很大,好几个T呢,不够?不够就扩容啊,啥?CPU?我们可是最强的至强U

停停停停停!行行行,你是土豪,你们公司牛逼,但是兄弟啊,你怎么知道你的代码会在什么机器,什么场景状态下运行呢?

如果就是不能给充足的内存呢?而且,一台服务器会跑n个服务,你的占用那么多,别的还玩不玩了,大家都占那么多怎么办,资源可不是无限的

人类的科技发展到现在,不可否认的是,内存这种的,还是属于稀缺资源

所以,可长点心吧,我不信你一个程序占用80%的CPU和内存,运维同事们能同意你这么搞,你的leader能同意你这么搞,除非公司你家的,那当我没说

算法评价指标

评价算法的两个指标就是:时间复杂度、空间复杂度

时间复杂度,就是一个程序运行所需要耗费的时间

空间复杂度,就是一个程序运行所需要消耗的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值