小白都能玩的算法day2-数量级、输入和输出

289 阅读2分钟

小白讲故事,每日都精彩。

今天小白要给大家带来什么故事呢?不,今天我们不讲故事。今天来学数学。~有趣

什么是数量级

什么鬼? 数量级? 头晕^V^^V^^V^

数量级

路人甲:噢~~,小白原来你要教我们数数。

小白一口老血喷出:在上面我们看到了,数量级简单理解,就是用来描述数字后面有10的位数。

路人甲:呜,这么简单!

继续:

数量级与生活

路人甲:原来我们阔以这样用数量级描述生活,小白我有点头绪了。

小白:其实技术源于生活。我们再看看数量级的比较。

比较级

路人甲:这样的比较很清晰,还容易记。比那些死数字好记多了。

小白:你说到了点子上来了。让小白给大家总结两点。

总结:

  • 具体的数字用来记录客观世界
  • 模糊的数字用来理解客观世界

数入和输出

让我么看看下面一段代码:

function sum(a){
    return a.reduce((x,y) => x+y, 0)
}
// 输入:数组
// 输出: 数字
// 输入规模:a.length

总结下:算法是输入到输出的映射。

在上面小白提到了一个概念叫规模。我们想想,资源有限,我们肯定要控制,预估当前规模。

输入规模

控制规模很重要,比如react的VirtualDOM需要支持万级数据(我们一个页面一般也就几千标签),要在毫秒级内渲染一次,才不会出现卡顿。大家心里要有个数

今日一题

从前有个小神仙,小白打住打住,留题呢!

// 写一个函数判断字符串中x的数量和o的数量是否相等(忽略大小写):
// XO("ooxx") => true
// XO("xooxx") => false
// XO("ooxXm") => true
// XO("zpzpzpp") => true // 没有x也没有o,所有相等,都为0
// XO("zzoo") => false