题目内容
(请给出正确答案)
[主观题]
设数组A[2n]中存放有n个负数和n个正数,且随机存放。现要求按负数、正数相问存放,请写出实现此要求
的算法。算法要求:不能使用额外的存储空间,但可使用少量工作单元,算法的时间复杂度应为O(n)。
查看答案
如果结果不匹配,请 联系老师 获取答案
设A的n个元素都不相同,证明下述算法产生的排列A[1],A[2],…,A[n]服从均匀分布:
Random Permute Array(A) //数组A[1..n]
1.for i←1 to n do
2.产生{i,i+1,…,n}上的均匀随机数k
3.交换A[i]与A[k]
这段程序能起到随机化输入,使其服从均匀分布的作用.比如,在快速排序算法的前面加上这段程序,就得到随机快速排序算法.
A.正确
B.错误