排序算法(升序)

冒泡排序

连续的扫描序列,每次将当前序列的最大记录通过两两交换移动到序列的尾部

简单选择排序

连续的扫描序列,不断地从待排序记录中选择最小的记录放到已排序序列的后面

直接插入排序

将目标记录与前面已经排好序的序列从后往前逐个比较,寻找插入的位置

折半插入排序

寻找目标记录在已排序的序列中的位置时,可以采取折半查找(二分查找)的方法

希尔排序

先将整个待排序序列通过间隔h划分为多个子序列,分别对每个子序列进行直接插入排序;h递减(h>=1),重复以上划分和排序

小结

算法

时间复杂度

空间复杂度

稳定性

最坏

平均

最好

冒泡排序

O(n^2)

O(n^2)

O(n)

O(1)

稳定

选择排序

O(n^2)

O(n^2)

O(n^2)

O(1)

不稳定

插入排序

O(n^2)

O(n^2)

O(n)

O(1)

稳定

希尔排序

O(n^1.3)

O(1)

不稳定

快速排序

O(n^2)

O(nlogn)

O(nlogn)

O(logn)

不稳定

堆排序

O(nlogn)

O(nlogn)

O(nlogn)

O(1)

不稳定

 

 

猜你喜欢

转载自blog.csdn.net/Ahead_J/article/details/84998607