初学算法,这里发表一下自己对排序的见解,顺便向大家求教如何找一本或者怎么能够学好算法,不会忘记,现在好多书只教如何理解发明者发明的代码,代码我们可以看懂,这不难,如何学到这里面的思想呢?学到了思想才能举一反三,否则,真的就是去学代码了。不敢妄自评论《算法导论》这类被高端人士奉为经典的书,只因我才疏学浅,并不能感受到其中奥秘,所以如何让我们这种脑子并不是灵活又想学算法思想这类小程序员有更好的学习呢?请大神们多多出出主意啊。
废物说那么一段,接着跟大家探讨下排序算法的理解,我认为,排序,就是一堆散乱的东西按照我们规定的顺序去排列,最后得到我们想要的序列。我是这么理解的,无论何种排序方式,我们先说出它的规则,例如按照数字的大小排序,这样,规则有了,于是,我认为,序列也就出来了,只不过序列不只一个,而是所有,这里我说的不够明白,我举个例子:1,2,3.三个数字,我们要求从大到小排列。答案是:3,2,1. 说出规则后其实有1,2,3,;1,3,2;2,1,3;……。这么多种序列,我们需要的是其中一种序列。排序算法就是从这总的序列中去挑选符合你规则的一种,所谓算法的时间复杂度也就是算法的快慢(这里是个人理解,如有不妥,请大家指出,我虚心接受),就是用多长时间能够选出这个序列,一般算法的时间复杂度都在nlgn,因为它们要比较,只要是通过比较排序的算法,都不能小于这个复杂度,这就是为什么counting-sort为什么快的原因,但是也会有缺陷。因此,设计好的算法就要运用数学思想,如何从这么多序列中快速选出你想要的序列。从这里来看,排序也与查找有何不小的联系