0
点赞
收藏
分享

微信扫一扫

排序算法学习(2)


1、       堆排序每趟总能选出一个最大值或者最小值位于根结点。

冒泡排序总是两两比较选出一个最小值位于数组前面。(第一趟排序后最大值会在最后面,第二趟次最大值在次最后面)


选择排序(第一趟排序之后最小值会在最前面,第二趟排序会在次前面)


快排选出的枢轴在一趟排序中就位于最终的位置。(以一个值为分界点)


直接插入排序不一定位于最终的位置,因为不确定后面插入的元素对于前面的元素是否有影响。(特征第一趟排序范围为0~1,前一个数比后一个小,第二趟排序范围0~2,前三个数从小到大排列)


2、       关键字比较的次数与记录的初始排列次序无关的是:选择排序(每一趟从待排序的数据元素中选择最小(最大)的一个元素,顺序放在已排好序的数列最后,直到全部待排序的数据元素排完。可以看到,每次都是遍历一遍剩下要排序的部分,找出其最大值或最小值。所以关键码比较次数与记录的初始排列无关);

有关的是希尔排序、冒泡排序、直接插入排序、归并排序。


3、       基本有序情况下对插入排序是最好的。

4、       归并排序和输入无关,线性对数级别。

逆序是插入的最坏情况。

冒泡和选择输入无关。

5、       快排的平均时间复杂性为O(nlogn),平均空间复杂性为O(log n)


(自己参考《妙趣横生的算法》还有点击打开链接所)

排序算法

平均时间

最坏情况

空间需求

稳定性

直接插入排序

n^2

n^2

1

稳定

希尔排序

n^1.5

n^2

1

不稳定

冒泡排序

n^2

n^2

1

稳定

快排

nlogn

n^2

logn

不稳定

简单选择排序

n^2

n^2

1

不稳定

堆排序

nlogn

nlogn

1

不稳定

归并排序

nlogn

nlogn

1

稳定

基数排序

d(r+n)

d(r+n)

rd+n

稳定


举报

相关推荐

0 条评论