勉! 博客园 首页 新随笔 联系 订阅 管理 程序猿修仙之路--算法之快速排序到底有多快

 天下武功,唯快不破!!外功如此,内功亦是如此。今日我们来修炼一门比较快速的排序算法-快速排序。快速排序流行的原因是它实现简单,并且在多数应用中比其他排序算法快的多。

 

习练快速排序,先要了解如下两个概念:

分治思想

关于排序,江湖盛传有一种分治思想,能大幅度提高排序心法的性能。所谓分治,即:化大为小,分而治之。达到治小而治大的成效。多年来基于分治思想衍生出多种排序心法,然万变不离其宗!

递归思想

关于递归,其实更像是一种解决问题的手段。我们把具有相同

解决思路的部分提取出来,循环调用。在code的表现形式上我们更倾向于说:自己调用自己。

       
               

虽然江湖上算法内功繁多,但是好的算法小编认为必须符合以下几个条件,方能真正提高习练者实力:

1            

时间复杂度(运行时间)        

在算法时间复杂度维度,我们主要对比较和交换的次数做对比,其他不交换元素的算法,主要会以访问数组的次数的维度做对比。。            

        其实有很多修炼者对于算法的时间复杂度有点模糊,分不清什么所谓的 O(n),O(nlogn),O(logn)...等,也许下图对一些人有一些更直观的认识。 

 

                   
                       

2            

空间复杂度(额外的内存使用)        

排序算法的额外内存开销和运行时间同等重要。 就算一个算法时间复杂度比较优秀,空间复杂度非常差,使用的额外内存非常大,菜菜认为它也算不上一个优秀的算法。
           

3            

结果的正确性        

这个指标是菜菜自己加上的,我始终认为一个优秀的算法最终得到的结果必须是正确的。就算一个算法拥有非常优秀的时间和空间复杂度,但是结果不正确,导致修炼者经脉逆转,走火入魔,又有什么意义呢?

     

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信