2.3-1 使用图2-4作为模型,说明归并排序在数组A=<3,41,52,26,38,57,9,49>上得操作。
{3,41}{26,52}{38,57}{9,49}
{3,26,41,52}{9,38,49,57}
{3,9,26,38,41,49,52,57}
2.3-2重写过程MERGE,使之不使用哨兵,而是一旦数组L或R的所有元素均被复制回A就立刻停止,然后把另一个数组的剩余部分复制回A
MERGE(A,p,q,r)
n1=q-p+1
n2=r-1
'让 L[1...n1+1]和 R[1...n2+1] 为截取的新数组'
for i=1 to n1
L[i]=A[p+i-1]
for j=1 to n2
R[j]=A[q+j]
'把两个数组合并成一个数组'
i=1
j=1
n=min{n1,n2}
for k=p to n
if L[i]<=R[j]
A[k]=L[i]
i++
else
A[k]=R[j]
j++
'判断L数组是否去空,若为空将R内容移入A'
if i==L.length+1
for k to r
A[k]=R[j]
j++
else if j==R.length+1
for k to r
A[k]=l[i]
i++
2.3-3 用数学归纳法证明:当n刚好是2的幂时,以下递归式的解是T(n)=nlgn。
T(n)=(2...........................................若n=22T(n/2