zoukankan      html  css  js  c++  java
  • 《算法导论》笔记 第7章 7.2快速排序的性能

    【笔记】

    最佳情况划分:两个子问题的大小都不大于n/2。

    平衡的划分:每当按照常数比例进行划分时,总的时间都是O(nlogn)


    【练习】

    7.2-1 利用代换法证明:递归式T(n)=T(n-1)+⊙(n)的解为T(n)=⊙(n^2)。

    假设


    可以选择合适的常数C_1 C_2。得出T(n) = ⊙(n^2)。


    7.2-2 当数组A的所有元素都具有相同值时,QUICKSORT 的运行时间是什么?

    O(n^2)


    7.2-3 证明:当数组 A 包含不同的元素、且按降序排序时,QUICKSORT 的运行时间是⊙(n^2)。

    当元素按降序排列时,每次都是最大不对称划分,因此运行时间是⊙(n^2)。


    7.2-4 对几乎已拍好序的输入进行排序,INSERTION-SORT优于QUICKSORT。

    对于一个排好序的数组,QUICKSORT的运行时间是⊙(n^2)。插入排序在有序的情况下只需比较n-1次。


    7.2-5 假设快速排序的每一层,所做的划分比例都是1-α:α,其中 0<α<1/2 是个常数。

    证明:在对应的递归树中,叶子结点的最小深度大约是-lgn/lgα,最大深度大约是-lgn/lg(1-α)。

    最小深度:设最大深度为m,每次向α分割方向下降,m次分割后仅剩1个元素 n*α^m = 1, α^m = 1/n ,两边取对数 mlgα = lg1-lgn ,m = -lgn/lgα

    最大深度:同理 n*((1-α)^m) = 1, (1-α)^m = 1/n ,取对数 mlg(1-α) = -lgn 即 m = -lgn/lg(1-α)


    *7.2-6 证明:对于任何常数 0<α<=1/2,在一个随机输入数组上,过程PARTITION产生比1-α:α更对称的划分的概率约为1-2α。




  • 相关阅读:
    【学习】CodeUi
    【C#】权限修饰符
    链表_初步认识
    关于mysql8.0及以上版本连接navicat时候报错(密码加密方式需要修改)
    docker 运行mysql最新版本用navicat连接报错:1251
    spring5的基本组成(6个模块)
    关于java中设计原则总结(7)
    java中String中的endsWith()方法
    mysql中基本的语句
    mysql中索引类型
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681626.html
Copyright © 2011-2022 走看看