排序算法总结

来源:互联网 发布:淘宝边度阳光是正品吗 编辑:程序博客网 时间:2024/06/06 04:08
排序算法注意点:




插入类排序:1:直接插入排序O(n^2)
                        2:折半插入排序O(n^2)
                        3:希尔排序    O(n乘以log以2为底,n的对数)
                        空间复杂度都是O(1)


交换类排序:1:冒泡排序O(n^2),空间复杂度O(1)
                        2:快速排序O(n乘以log以2为底,n的对数),空间复杂度O(log以2为底,n的对数)


选择类排序:1:简单选择排序O(n^2),空间O(1)
                        2:堆排序O(n乘以log以2为底,n的对数),空间复杂度O(1)


二路归并排序:O(n乘以log以2为底,n的对数),空间复杂度O(n)


基数排序:时间O(d(n+rd)) d:关键字个数,n:元素数,rd:关键字的取值范围
                 空间O(rd)
注:对于数值类排序,只能从低位到高位进行基数排序,能有序,(高到低,不行)










1:平均情况下,(快,希,归,堆)  ->时间复杂度 O(n乘以log以2为底,n的对数)

      其余O(n^2),基数排序O(d(n+rd)) d:关键字个数,n:元素数,rd:关键字的取值范围


2:空间复杂度,快->O(log以2为底,n的对数) 
                              归->O(n)
                              基数->O(rd)

                              其他->O(1)


3:时间复杂度,直插与冒泡容易(有序)变成O(n)


4:不稳定排序->(快,希,选,堆)


5:经一趟排序,能保证一个元素到达最终位置:a交换类(冒泡,快速)

                                                                                   b选择类(选,堆)


6:排序,元素比较次数和原始序列无关:a选择排序
                                                                        b折半插入排序

       另外,(归并,堆,基数)时间复杂度与起始无关


7:排序趟数(所有数都被处理一次为一趟)与原始序列有关--->交换类:冒/快









1 0