- A+
领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)
热门下载区==>点此链接进入<<<
目录(点击切换)
本文节选自《计算之魂》电子版:
//计算之慷//3,两种算法在复杂度上相差哪怕只有一点点,广很大之后,效率可能就差出万亿倍了。比如用非常容易想到的选择排序或插入排序和专业人士常用的快速排序对10多亿个QQ号排一次序,计算量分别是大约100亿亿次和30亿次。对今天的大数据处理来讲,对10亿个QQ号排序并非一件大事,但是从这件事可以看出,如果选择的算法在复杂度的数量级上相差那么一点点,代码执行的效率就有天塘之别。我常常用和芝麻、西瓜、火车、大山、地球……来形容算法复杂度的数量级之差,其实复杂度的差异会更大。相比之下,算法复杂度函数中差出个不受六影响的常数,哪怕是干百倍,也没有什么了不得的。这就好比1粒芝麻和10粒芝麻都是芝麻数量级的东西,在西瓜面前,大家就不要比了。事实上在计算机科学领域,如果谁在论文中说自己把目前最好的算法的速度提升了一倍,这样的论文是无法发表的。另外,如果一个算法的复杂度由一高一低的两部分KV和gm组成,即Vi+sg(CV,后面数量级低的那部分可以直接省略,也就是说OUKNM+g(N)=OUUV))。这在数学上显然不成立,但是在计算机算法上是被认可的
吴军计算之魂
。这等于说一个西瓜加上两粒芝麻还等于原来的西瓜,其目的是让计算机科学家们能够把注意力放在数量级的差异上。要点复杂度、数量级、大O的概念。思考题1.2如果一个程序只运行一次,在编写它的时候,你是采用最直观但是效率较低的算法,还是依然寻找复杂度最优的算法?(会俩“]1.3怎样寻找最好的算法这一节,我们用一道例题来说明好算法和坏算法的差异。034逐//第1章/毫厘干里之差一一大O概念/例题1.3总和最天区间问题二人宽食半下给定一个实数序列,设计一个最有效的算法,找到一个总和最大的区间。比如在下面的序列中:[4总和最大的区间是从第5个数(23.2)到第10个数(5.4)。这个问题我还见过另一种表述,即寻找一只股票最长的有效增长期。研究股票投资的人都想了解一只股票最长的有效增长期是哪一个时间段,即从哪天开始买进到哪天卖出的收益最大。当然,很多股票只要你持有不卖,长期来讲总是收益不断增加的。但是,如果扣除整个市场(大盘)对股票价格的影响,任何一只股票都有一个时间点,过了那个时间点,再持有它就不如买指数基金了。美国早期的道琼斯指数的成分股,今天都被
吴军计算之魂发布会
淘汰出局了。也就是说,即便是那些明星公司,也有“衰老”到不值得持有的时候。如果我们把一只股票每天价格的变化,扣除当天大人盘的幅度,也会得到一系列正、负的实数,正表示涨幅超过大查,负则表示不如大瘟。比如上面那一组数可以认为是一只股票每天的涨跌幅度(扣除大盘影响后)。当然在股市上没有人能预言未来该在哪一天抛售股票,因此这个理论上最大的收益,只是一个参考标准,它可以用来衡量交易者的绝对水平。解决这个问题有四种可行的方法,下面根据计算复杂度从高到低的次序作弓一川油o方法1,做一次三重循环,其实就是中学里学的排列组合的方法。我们假设这个序列有天个数,依次是cvavayax。假定区间起始的数字序号为P,结束的数字序号为9,这些数字的总和为S(p,g),则S(P,g)=ap+anri…+eus五可以从1一到天,这是两重循环了,因此区间一头一到天,9可以从疡一尾的组合有OU种。在每一种组合中,计算%p,9)平均要做镶4次加法,这是又一循环。因此这种算法的复杂度是OUK)。这个方法虽然完成了任务,但是做了太多的无用功。如果遇上通用电气(GE)035
吴军 计算机之魂
| 计算之魂 吴军 百度云 | 计算之魂免费阅读 |
| 计算之魂百科 | 计算之魂百度网盘 |
| 计算之魂epub下载 | 计算之魂百度百科 |
综上:计算之魂百度百科值得推荐阅读

