首页 > 试题广场 >

(线性时间原址排序)假设有一个包含n个待排序数据记录的数组,

[问答题]
(线性时间原址排序)假设有一个包含n个待排序数据记录的数组,且每条记录的关键字的值为0或1。对这样一组记录进行排序的算法可能具备如下三种特性中的一部分:
1.算法的时间代价是O(n)。
2.算法是稳定的。
3.算法是原址排序,除了输入数组外,算法只需要固定的额外存储空间。
a.给出一个满足上述条件1和条件2的算法。
b.给出一个满足上述条件1和条件3的算法。
c.给出一个满足上述条件2和条件3的算法。
d.你设计的算法(a)~(c)中的任一个是否可以用于RADIX-SORT的第二行作为基础排序方法,从而使RADIX-SORT在排序有b位关键字的n条记录时的时间代价是O(bn)?如果可以,请解释应如何处理;如果不行,请说明原因。
e.假设有n条记录,其中所有关键字的值都在1到k的区间内。你应该如何修改计数排序,使得它可以在O(n+k)时间内完成对n条记录的原址排序。除输入数组外,你可以使用O(k)大小的额外存储空间。你给出的算法是稳定的吗?(提示:当k=3时,你应该如何做?)
RADIX-SORT(A,d)
1    for i = 1 to d
2        do use a stable sort to sort array A on digit i

这道题你会答吗?花几分钟告诉大家答案吧!