您的位置:首页 > 其它

排序方式

2016-03-30 16:38 162 查看
插入排序:每趟将一个待排元素插入有序区的合适位置

分类时间复杂度空间复杂度稳定性算法描述
直接插入排序最好O(n)

最坏O(n^2)

平均O(n^2)

O(1)

需要一个监视哨

稳定直接插入排序所产生的有序区不一定是全局有序的

每一趟不一定将一个元素放在最终位置上

插入排序效率与待排序数据的顺序有关,当正序时效率最高,反序时效率最低

折半插入排序平均O(n^2)O(1)稳定折半插入排序,在直接插入排序的基础上,减少了寻找有序区合适位置的比较次数,而元素的移动次数不变
希尔排序

又称缩小增量排序

平均O(n^1.3)O(1)不稳定希尔排序每一趟并不产生有序区

每一趟不一定将一个元素放在最终位置上

希尔排序的效率与待排序数据的顺序有关,当正序时效率最高,反序时效率最低

交换排序:两两比较待排元素,逆序则交换

分类时间复杂度空间复杂度稳定性算法描述
冒泡排序最坏O(n^2)

平均O(n^2)

O(1)稳定起泡排序中所产生的有序区一定是全局有序的

每一趟排序都将一个元素放到最终位置上

正序效率最高,逆序效率最低

快速排序平均O(nlog2n)递归栈中占空间

至少O(log2n)

最多O(n)

不稳定快速排序不产生有序区

但每一趟都归位一个元素

与待排数据顺序有关,正序和逆序时效率都低,只有当数据随机分布时,每划分的子区间长度大致相等时,效率最高

选择排序:在无序区中选择最值放在有序区的最后,形成新的有序区和无序区

分类时间复杂度空间复杂度稳定性算法描述
简单选择排序O(n^2)O(1)不稳定有序区全局有序

每趟都归位一个元素

时间复杂度与待排序元素顺序无关
堆排序O(nlog2n)O(1)不稳定有序区一定全局有序,有序区全部大于或小于无序区中的关键字

每趟归位一个元素

时间复杂度与待排序元素无关
此外还有基于分治思想的归并排序和适用于多关键字排序的基数排序(又称桶排序)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: