算法导论8-2 以线性时间原地排序
2012-12-21 21:32
225 查看
假设有一个有n个数据记录组成的数组要排序,且每个记录的关键字的值为0或1。排序这样一组记录的一个算法应具备如下三个特性中的一部分。
1)算法的运行时间为O(n)。
2)算法是稳定的。
3)算法是原地排序的,它可以使用除输入数组以外的固定量的存储空间。
a)给出一个满足上述条件1和条件2的算法。
b)给出一个满足上述条件1和条件3的算法。
c)给出一个满足上述条件2和条件3的算法。
d)在a)~c)中给出的算法能否用来在O(bn)时间内排序,对有b位关键字的n个记录进行基数排序?如果行,说明如何做;如果不行,说明原因。
e)假设一个n个记录中每个的关键字都介于1到k之间。说明如何修改计数排序,使得可以在O(n+k)时间内对n个记录原地排序。除输入数组外,可另用O(k)的存储空间。你给出算法是稳定的吗?(提示:当k=3时应该如何做)
解答提要:
a)计数排序
b)快排的划分思想,因为只有0,1故而一次划分即可
c)插入排序之类的都可以
d)第一个可以,第二个不行(不稳定),第三个也不可以(时间效率)
e)思路,计数排序,使用两个数组A
,C[k],其中A味输入数组,C为记录各数字出现次数的数组,然后直接由C生成输出数组存放在A中。 不稳定的!
1)算法的运行时间为O(n)。
2)算法是稳定的。
3)算法是原地排序的,它可以使用除输入数组以外的固定量的存储空间。
a)给出一个满足上述条件1和条件2的算法。
b)给出一个满足上述条件1和条件3的算法。
c)给出一个满足上述条件2和条件3的算法。
d)在a)~c)中给出的算法能否用来在O(bn)时间内排序,对有b位关键字的n个记录进行基数排序?如果行,说明如何做;如果不行,说明原因。
e)假设一个n个记录中每个的关键字都介于1到k之间。说明如何修改计数排序,使得可以在O(n+k)时间内对n个记录原地排序。除输入数组外,可另用O(k)的存储空间。你给出算法是稳定的吗?(提示:当k=3时应该如何做)
解答提要:
a)计数排序
b)快排的划分思想,因为只有0,1故而一次划分即可
c)插入排序之类的都可以
d)第一个可以,第二个不行(不稳定),第三个也不可以(时间效率)
e)思路,计数排序,使用两个数组A
,C[k],其中A味输入数组,C为记录各数字出现次数的数组,然后直接由C生成输出数组存放在A中。 不稳定的!
相关文章推荐
- 算法导论学习之线性时间排序
- 算法导论第八章总结:线性时间排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 算法导论第八章线性时间排序课后答案
- "《算法导论》之‘排序’":线性时间排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 《算法导论》学习笔记之Chapter8线性时间排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 《算法导论》第8章 线性时间排序 个人笔记
- 算法导论之线性时间排序(3)
- 算法导论_第八章_线性时间排序
- 算法导论 第8章 线性时间排序 课后习题
- 算法导论--线性时间排序
- 算法导论-4.随机快速排序与线性时间排序
- 算法导论——lec 08 线性时间排序
- 算法导论 第8章 线性时间排序-计数排序的原址排序
- 《算法导论》线性时间O(n)排序
- 算法导论:第8章 线性时间排序__基数排序
- 算法导论学习笔记-第8章 线性时间排序