java数据结构之排序_排序算法的时空复杂度介绍
Posted xxniuren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数据结构之排序_排序算法的时空复杂度介绍相关的知识,希望对你有一定的参考价值。
该内容摘自java程序员面试宝典第三版
排序稳定性:若存在多个关键字相同的记录,经过排序后,这些具有相同关键字的记录之间的相对次序保持不变,则称该排序算法为稳定的排序算法;若具有相同关键字的记录之间的相对次序发生了变化,则称这种排序方法是不稳定的。
O(n2)是O(n*n)
稳定的排序算法为:
稳定的排序算法 | 时间复杂度 | 空间复杂度 |
气泡排序(bubble sort) | 最差、平均都是O(n2) 最好是O(n) | 1 |
双向的冒泡排序(鸡尾酒排序) | 最差、平均都是O(n2) 最好是O(n) | 1 |
插入排序(insertion sort) | 最差、平均都是O(n2) 最好是O(n) | 1 |
归并排序(merge sort) | 最差 平均 最好都是 O(nlogn) | O(n) |
桶排序(bucket sort) | O(n) | O(k) |
基数排序 | O(dn)其中d为常数 | O(n) |
二叉树排序(Binary tree) | O(nlogn) | O(n) |
图书馆排序 | O(nlogn) | (1+g)n |
非稳定的排序算法有:
非稳定排序算法 | 时间复杂度 | 空间复杂度 |
选择排序(selection sort) | 最差平均都是 O(n2) | 1 |
希尔排序(shell sort) | O(nlogn) | 1 |
堆排序(heapsort) | 最差平均最好 都是O(nlogn) | 1 |
快速排序(fast sort) | 平均是O(nlogn)最坏是O(n2) | O(logn) |
以上是关于java数据结构之排序_排序算法的时空复杂度介绍的主要内容,如果未能解决你的问题,请参考以下文章