数据结构---第八章排序---归并排序和基数排序---选择题

1在排序算法中,空间复杂度是较为容易记忆的。

大部分排序算法的空间复杂度都为O(1),只有归并排序为O(n),快速排序为O(log2n)。值得注意的是,在最坏的情况下,快速排序的空间复杂度也为O(n)。
归并排序空间复杂度为O(n)的原因在于merge操作是把两个n/2的有序表合并为一个有序表,因此需要n个辅助空间。
快速排序空间复杂度不固定的原因在于它用到了栈,如果初始队列完全有序,那就需要开辟n-1层栈,每一趟快速排序只能定位一个元素。但如果初始队列像一个有序二叉树一样,每一趟排序可以定位2个甚至多个元素,那么只需要开辟O(log2n)层栈。

2选择排序和归并排序的比较次数是与序列初始状态无关的,直接插入排序的比较次数和移动次数取决于待排序表的初始状态。

3一般而言,对于N个元素进行k路归并排序时,排序的趟数m满足k^m=N,从而m=logkN,又考虑到m为整数,所以需要上取整。

4关于排序算法是否稳定这一点,内容实在是有些难以记忆。首先,所有的选择排序都是不稳定的,其次快速排序和希尔排序也是不稳定的。

5基数排序在所有排序算法中相当特殊,因为它不能对float和double类型的实数进行排序。

6在算法的时间复杂度这一块,我注意到一件有意思的事情,那就是算法越复杂,时间复杂度越小,算法越简单,时间复杂度越大。

堆排序和二路归并排序无论在什么情况下,它的时间复杂度都是O(nlog2n)。而快速排序的性能比他们差一些,在逆序的情况下,时间复杂度为O(n)。
简单选择排序的时间复杂度是最大的,为O(n^2),这可能是因为,简单选择排序无论在什么情况下比较次数都为n(n-1)/2。
冒泡排序和直接插入排序的时间复杂度都不是最差的。

7基数排序特殊的另外一点在于,元素的移动次数与关键字的初始排列次序无关。

上一篇: 数据结构---第八章排序---选择排序---选择题
下一篇: 高等数学---第八章隐函数偏导数与全微分
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值