第二章 2.3 设计算法

这篇博客详细探讨了算法的优化,包括使用图示解释归并排序在数组A=<3,41,52,26,38,57,9,49>上的操作,重写归并排序的MERGE过程以减少冗余,用数学归纳法证明递归式T(n)=nlgn的情况,讨论插入排序的递归版本及其最坏情况运行时间,深入分析二分查找算法的伪代码及最坏情况运行时间为θ(lgn),最后提出如何将二分查找应用于插入排序以改善其最坏情况的运行时间,并描述了一个θ(nlgn)时间复杂度的算法,用于在有序集合中查找两个数之和等于特定值的元素。" 81941198,7966162,神经网络反向传播公式详解,"['深度学习', '神经网络', '反向传播']
摘要由CSDN通过智能技术生成
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=22Tn/2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值