• 《算法导论》笔记 第7章 7.4快速排序分析


    【笔记】

    利用RANDOMIZED-PARTITION,快速排序算法期望的运行时间当元素值不同时,为O(nlgn)。


    【练习】

    7.4-1 证明:在递归式:


    中,T(n)=Ω(n^2)。

    采用代换法。

    猜测 T(n) <= c*n^2,c为某个常数。


    选择足够大的c,使得 c*(2*n-1)可以支配Θ(n), T(n) <= c*n^2成立。


    7.4-2 证明:快速排序的最佳情况运行时间为Ω(nlgn)。



    7.4-3 证明:在q=0,1,...,n-1区间上,当q=0或q=n-1时,q^2+(n-q-1)^2取得最大值。

    令x=q


    一元二次函数,开口向上,x=(n-1)/2 为对称轴。

    因为 0<=q<=n-1,所以x=0或x=n-1时,y取得最大值,即q^2+(n-q-1)^2取得最大值。


    7.4-4 证明:RANDOMIZED-QUICKSORT 算法的期望运行时间是Ω(nlgn)。

    随机化还没看=。=


    7.4-5 当在一个长度小于k的子数组上调用快速排序时,让他不做任何排序就返回。当顶层的快速排序调用返回后,对整个数组运行插入排序来完成排序过程。证明这一排序算法的期望运行时间为O(nk+nlg(n/k))。在理论上和实践中,应如何选择k。

    算法的时间由快速排序与插入排序两部分组成。

    对于快速排序,递归树由logn变为logn-logk因此复杂度为O(nlog(n/k))。

    对于插入排序,设快速排序将数组分为m份,每份Ki个元素,Ki<=k,∑Ki=n。

    O(∑Ki*Ki) <= O(∑Ki*k) = O(k*∑Ki) = O(n*k)。

    因此期望运行时间为O(nk+nlg(n/k))。

    k的值理论在logn附近,实验中在非理论值附近选择k也可能最优。


    *7.4-6 考虑对PARTITION过程做这样的修改:从数组A中随机的选择出三个元素,并围绕这三个数的中数对它们进行划分。求出以α的函数形式表示的、最坏情况中α:(1-α)划分的近似概率。

    *


  • 相关阅读:
    ajax--->简单加法小练习
    Django----->Ajax
    Django----->inclusion_tag的使用
    分页插件
    权限--中间件
    Django----->一周后的重温
    Django---->视图(View)
    【转载】chmod命令详解
    【转载】linux ls -l命令详解
    js自定制周期函数
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681624.html
Copyright © 2020-2023  润新知