算法课_归并排序应用



Question 1

Merging with smaller auxiliary array. Suppose that the subarray  a[0] to  a[N-1] is sorted and the subarray  a[N] to  a[2*N-1] is sorted. How can you merge the two subarrays so that  a[0] to  a[2*N-1] is sorted using an auxiliary array of size  N  (instead of  2N )?
Your Answer   Score Explanation
Total   0.00 / 0.00  
Question Explanation

Hint: copy only the left half into the auxiliary array.

Question 2

Counting inversions. An  inversion in an array  a[]  is a pair of entries  a[i]  and  a[j]  such that  i<j  but  a[i]>a[j] . Given an array, design a linearithmic algorithm to count the number of inversions.
Your Answer   Score Explanation
Total   0.00 / 0.00  
Question Explanation

Hint: count while mergesorting.

Question 3

Shuffling a linked list. Given a singly-linked list containing  N  items, rearrange the items uniformly at random. Your algorithm should consume a logarithmic (or constant) amount of extra memory and run in time proportional to  NlogN  in the worst case.
Your Answer   Score Explanation
Total   0.00 / 0.00  
Question Explanation

Hint: design a linear-time subroutine that can take two uniformly shuffled linked lists of sizes  N1  and  N2  and combined them into a uniformly shuffled linked lists of size  N1+N2 .

类似归并排序,从1-2-4,

保证两个归并前是随机排序的,即N1和N2里的元素都有 1/N1 和 1/N2 的概率排到每一个位置,那么N1和N2归并的时候,N1/(N1+N2)的概率选择N1,N2/(N1+N2)的概率选择N2,那么每个元素在每个位置的概率都是1/(N1+N2)。例如,两个长度为1的归并,每个都有1/2的概率排在两个位置上。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值