算法之美——《趣学算法》
0|1算法之美
1.1打开算法之门
瑞士著名的科学家N.Wirth教授曾提出:数据结构 + 算法 = 程序
数据结构是程序的骨架,算法就是程序的灵魂。
日常中我们每天都再用到算法,算法无处不在。你去超市买菜,在资金有限的情况下,考虑先买什么,后买什么,算算是否超额;在家中做饭,用什么食材、调料,做法、步骤都是算法。所以,不要说你不会算法,其实你每天都在用!
但是对于计算机的专业算法,很多人会困惑:“I can understand, but I can’t use!”,我能看懂,但不会用!就像莫高窟的壁画,看到它、感受它,却无法走进,所以我们需要一把打开算法之门钥匙🔑。
正如陶渊明的《桃花源记》所说:
“初极狭,才通人。复行数十步,豁然开朗。”
——《桃花源记》 陶渊明
1.2妙不可言——算法复杂度
我们先来看一道面试题:
写一个算法,求下面序列之和
-1, 1, -1, 1, ···, (-1)n
当你看到这道题时,你怎么想?for还是while?
先看算法1-1:(1-1与1-2为示意代码,不可运行)
//算法1-1
sum = 0;
for(i = 1; i <= n; i++){
sum = sum + (-1) ^ n;
}
可能一般人都会想到这个算法
那么再看下面算法1-2:
//算法1-2
if(n % 2 == 0){
sum = 0;
}
else{
sum - 1;
}
有人看到这个算法后恍然大悟🙇,原来可以这样啊?这不就是数学家高斯使用的算法吗?原来这么简单,本人就不再说高斯的英雄事迹了,都被大家说烂了,大家都知道
从1加到100,如果用算法1-1,那么需要100次,如果用算法1-2,只需要1次(1 + 100) x 50 = 5050
,如果1加到10000,算法1-1要用10000次,而算法1-2还是只需要1次!这就是算法!
高斯的方法我也知道,但遇到类似的题还是……我用的笨方法也是算法吗?
答:是算法
算法是指对特定问题求解步骤的一种描述(重点)
——算法具有以下特性:
- 有穷性:算法不可能永远不停止
- 确定性:每条语句有确定的意义
- 可行性:算法在当前环境条件下可以通过有限次数运算实现
- 输入输出:有零个或多个输入,一个或多个输出
——“好”的算法标准如下
- 正确性:正确执行达到目的,程序运行正常,无语法错误
- 易读性:算法遵循各个规则,简洁易懂,注释恰当,方便理解
- 健壮性:算法对非法数据及操作有较好的反应和处理,例如学生信息管理系统,若误输入学生年龄为210,那么算法应当提示出错
- 高效性:算法运行效率高,所谓时间复杂度
- 底存储型:算法所需要的存储空间低,所谓空间复杂度
😺😺😺
作者:(´▽`)ノProgram(´▽`)ノ
参考:《趣学算法》
__EOF__
作 者:Aeterna
出 处:https://www.cnblogs.com/coding365/p/12470388.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步