计算之魂电子版(计算之魂百度网盘)

  • 计算之魂电子版(计算之魂百度网盘)已关闭评论
  • A+
所属分类:书评社区

领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)

关注我

热门下载区==>点此链接进入<<<

本文节选自《计算之魂》电子版:

/计算之魂//在找到时间复杂度为CUNMogN)的排序算法后,照说在数量级上不可能再有更好的排序算法了(这一点我们会在本章的附录里证明),但是毕竟相同数量级的算法仍可能有常数倍的差异。因此虽然在算法复杂度上寻找同数量级算法是一件没让意义的事情,但是如果在工程上能保证某个算法的实际运行时间总是比其他算法少一些还是有人愿意研究的。在这样的指导思想下,英国计算机科学家托尼。惟尔(TonyHoare)发明了一种比归并排序算法和《后来的)堆排序算法快两三们的算法,他称之为快速排序算法。此外,快速排序算法只需要OUogN)的额外空间,虽然这让它不满足就地特征的要求,但是这个空间需求足够小,小到可以忽略。关于堆排序和快速排序,我们后面会讲到,这里只介绍它们和其他排序算法相比所具有的特点。快速排序和堆排序看似都比归并排序完美,但是它们还是存在自己的问题。在排序中,我们有时还期望一种算法满足所谓的稳定性要求,也就是说,两个相同的元素在排序前后相对位置维持原有的次序。比如说,在排序前第35个元素和第44个元素的值都是130,那么排序后我们还希望原先的第35个元素仍在第44个元素之前。这样的性质会给具有多列数值的表格在排序时带来方便。比如说布朗〈Brown)和弗朗兹(Franz)体重都是130斤(1斤=0.5干克),我们要把所有的人根据体重排序,相同体的人,根

计算之魂免费

据姓名字母顺序排序,因此布朗在弗朗兹前面。一个简单的做法就是先按照姓名排序,之后再按照体重排序。第一遍排序后,布朗就在弗朗兹之前了,在第二遍排序后,体重149斤或者更轻的都在他们前面,151斤或者更重的都在他们后面,而他们两人则维持原先的排序。但是,这件事能够做到的前提是,第二次按照体重排序时,要保证布衣和弗朗兹的相对位置不变,如果他们因为同是1530斤,位置随机改变了,那么这件事就做不成了。因此维持稳定性,也是排序算法所要考虑的一个重要因素,否则那些算法在很多场合就不适用。非常遗性的是,不同于归并排序算法,快速排序和堆排序本身不具有稳定性,因此保留归并排序有时还是有意义的。此外,快速排序还有一个明显的缺点,那就是虽然它的平均时间复杂度是COMogNV),052但是在极端的情况下时间复杂//第1章/毫厘干呈之差一一大O概念//度是OUV)。虽然后来不少计算机科学家通过改进让它的最坏时间复杂度也能达到O(ViogN),但是效率就有所下降。可见,在计算机领域,任何改进其实都是有代价的。在这一节的最后,我们对比一下上述三种时间复杂度为OOVogN)的排序算法,如表1.3所示。表13常见的几种高效排序算法的对比算法|平均时间复杂度|最坏时间复杂度|售外空间复杂度|。稳定性归并排序O(NIogN)O(NlogN)O(V)V堆排序|O(MNogNM)

吴军计算之魂哪里可以买到

OUVIogM)O(1)痰|快速排序ONiogM)OUV)|odogM区从表1.3的对比中,我们可以看机科学领域做事的两个原则:首先,要尽可能地避免那些做了大量无用如选择排序和插入排序,一旦不小,的;有很多考量的维度,其次,接近理论最佳值的算法可能有很多种,除了自因此有时不存在一种算法就比另一种绝对好的情况,只是在设定这三种排序算法各有干秋,心采用了那样的方法,带来的的边界条件下,某些算法比其他的更适合罢了。1.4.3”针对特殊情况,我们是否还有更好的答案这里体现出在计算功的方法,比危害有时是灾难性纯考量计算时间外,可能还归并排序、堆排序和快速排序使计算机科学家们对排序这个问题的深入理解,也满足了今天大部分情况下应上满也是事实,特别是使用最多的快速#述三种排序算法都不映要求。但是于不能漳排序时就不能使用它。因好的排序算法,当然使用求。因此,今天人们对排个|了大:上世纪,至今仍在使门尺。应该;员它们的由F序,足稳定性的要求,在处理多列表格时就比较麻烦。比如在实现Excel表格的目c此,科学家们依然在考虑在某个特定的月一种排序算法可能难以兼顾前面讲到的序算法的改进大多序算法《HybridSortingAlgorithm),比如将快速排序和堆排序己针会征己口结几种排序算法的应用中寻找各个维度的多种需思想,形成混合排起来的内省排序下心.加Cn避

计算之魂吴军下载

计算之魂吴军在线阅读 计算之魂吴军豆瓣
吴军计算之魂哪里可以买到 计算之魂电子版
计算之魂在线阅读 硅谷吴军计算之魂

计算之魂电子版(计算之魂百度网盘)综上:计算之魂百度网盘值得推荐阅读