各种排序算法的复杂度

来源:互联网 发布:abb机器人编程指令实例 编辑:程序博客网 时间:2024/06/14 08:17

一.排序算法复杂度                        

 

  排序算法

                                    时间复杂度

 

    空间复杂度(最坏情形)

        最好

        平均

       最坏

 冒泡排序

 O(n)

 O(n^2)

 O(n^2)

  O(1)

 插入排序

 O(n) 

 O(n^2)

 O(n^2)

  O(1)

 归并排序

 O(n*log(n))

 O(n*log(n))

 O(n*log(n))

 O(n)

 快速排序

 O(n*log(n))

 O(n*log(n))

 O(n^2)

 O(n)

 堆排序

 O(n*log(n))

 O(n*log(n))

 O(n*log(n))

 O(1)

 桶排序

 O(n+k)

 O(n+k)

 O(n^2)

 O(nk)

 基数排序

 O(nk)

 O(nk)

 O(nk)

 O(n+k)

 

二.使用比较的排序算法下界

上面的二叉树建立了决策树的模型,可以得出的结论是:任意N个数,它们的排列方式有N!种,使用比较排序,至少要比较log(N!)次(树的深度)。这可以用于证明排序算法的下界。只使用元素间比较的任何排序算法需要进行Ω(NlogN)次比较。

证明:使用比较的排序需要进行log(N!)次比较,log(N!)  =log(N(N-1)(N-2)(N-3)(N-4)…1)

                                                                         >=logN+log(N-1)+…log(N/2)

                                                                         >=N/2log(N/2)

                                                                           =N/2log(N)-N/2

                                                                           =Ω(NlogN)

 

0 0
原创粉丝点击