排序算法学习(2)

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

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

 

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

 

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

 

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

 

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

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

 

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

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

逆序是插入的最坏情况。

冒泡和选择输入无关。

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


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

排序算法平均时间最坏情况空间需求稳定性
直接插入排序n^2n^21稳定
希尔排序n^1.5n^21不稳定
冒泡排序n^2n^21稳定
快排nlognn^2logn不稳定
简单选择排序n^2n^21不稳定
堆排序nlognnlogn1不稳定
归并排序nlognnlogn1稳定
基数排序d(r+n)d(r+n)rd+n稳定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值