算法之美——《趣学算法》

算法之美

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次!这就是算法!

高斯的方法我也知道,但遇到类似的题还是……我用的笨方法也是算法吗?

答:是算法

算法是指对特定问题求解步骤的一种描述(重点)

——算法具有以下特性:

  1. 有穷性:算法不可能永远不停止
  2. 确定性:每条语句有确定的意义
  3. 可行性:算法在当前环境条件下可以通过有限次数运算实现
  4. 输入输出:有零个或多个输入,一个或多个输出

——“好”的算法标准如下

  1. 正确性:正确执行达到目的,程序运行正常,无语法错误
  2. 易读性:算法遵循各个规则,简洁易懂,注释恰当,方便理解
  3. 健壮性:算法对非法数据及操作有较好的反应和处理,例如学生信息管理系统,若误输入学生年龄为210,那么算法应当提示出错
  4. 高效性:算法运行效率高,所谓时间复杂度
  5. 底存储型:算法所需要的存储空间低,所谓空间复杂度

😺😺😺


作者:(´▽`)ノProgram(´▽`)ノ

参考:《趣学算法》

posted @ 2020-03-12 17:02  Aeterna_Gungnir  阅读(309)  评论(0编辑  收藏  举报