排序算法(九):总结

来源:互联网 发布:java读取日志文件处理 编辑:程序博客网 时间:2024/06/05 21:09

1、算法分类

根据算法采用的主要操作,可以将算法分为:插入排序、交换排序、归并排序、选择排序四大类,前面介绍的七种算法分别归属这四大类。

排序算法插入排序交换排序选择排序归并排序插入排序希尔排序冒泡排序快速排序选择排序堆排序归并排序
从算法的简单性来看,又可分为:简单算法、改进算法:

简单算法:冒泡排序、插入排序、选择排序

改进算法:希尔排序、堆排序、归并排序、快速排序


2、算法性能

排序方法平均情况最好情况最坏情况辅助空间稳定性冒泡排序O(n^2)O(n)O(n^2)O(1)稳定选择排序O(n^2)O(n^2)O(n^2)O(1)稳定插入排序O(n^2)O(n)O(n^2)O(1)稳定希尔排序O(nlogn)~O(n^2)O(n^1.3)O(n^2)O(1)不稳定堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定快速排序O(nlogn)O(nlogn)O(n^2)O(logn)~O(n)不稳定由以上表格可以看出:

a、当待排记录较少时,采用简单排序算法较优。

b、对于非常在乎稳定性的应用,归并排序是较好的选择。

c、从空间复杂度来说,归并排序与快速排序都需要一定的空间消耗,而堆排序的空间复杂度为O(1),是较好的选择。

d、从时间复杂度来说,堆排序与归并排序比较稳定,最好情况与最坏情况的时间消耗相同,而快速排序不稳定,最好情况与最坏情况相差较大。

0 0
原创粉丝点击