各种排序算法的总结

来源:互联网 发布:C语言next_permutation 编辑:程序博客网 时间:2024/06/07 02:52

1.稳定性

稳定:直接插入排序、二分法插入排序、冒泡排序、归并排序
不稳定:希尔排序、简单选择排序、堆排序、快速排序

2.平均时间复杂度

概念:算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。

直接插入排序:O(n2)
二分法插入排序:O(n2)
冒泡排序:O(n2)
归并排序:O(nlogn)
希尔排序:O
简单选择排序:O(n2)
堆排序:O(n*log2n)
快速排序:O(n*log2n)

3.空间复杂度

概念:一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。

直接插入排序:O(1)
二分法插入排序:O(1)
冒泡排序:O(1)
归并排序:O(1)
希尔排序:O(1)
简单选择排序:O(1)
堆排序:O(1)
快速排序:O(log2n)~O(n)

原创粉丝点击