A. 结合二叉树的快速排序算法分析
对 3,9,1,6,5,4,8,2,10,7 进行从小到和悄迟大的快速排序
对于第一次遍历,如下图所示:
对应的二叉树结果是:
那么经过后几次遍历比较可以得到如下二叉树:
这运灶时我们可以计算一下我们的快速排序算法进行了多少次比较:
,即每个节点到根结点的距离之和。
由上例可知,快排可视为一个二叉树构建的过程,那么这个二叉树构建的速度就决定了我们快排的效率。可以确定的是,对于同样的数据元素在不同的原始排列条件下,构建的二叉树越矮,则排序效率越高。
通过这一理论,我们可以更具体的分析其不同情况下的时间复杂度:
完全二叉树满足如下公式:
对于深度为h的完全二叉树,若为满二叉树,比较次数为:
这里的叶子数量m与深度h的关系:
那么叶子到根的距离d为:
即, ,
由于 为整数,即可认为 ,
而对于完全二叉树来说,叶子数 ,与内点(带有叶子节点的顶点)数 的关系为 ,则顶点数
那么由上述公式可得:
即, ,时间复杂度为: 。
那么若节点数为n,则:
,即时间复杂度为: 。
由于分割标准的选取概率完全相同,那么可以得到平均比较次数为:
由于这里的 ,以及
由 ,以及 ,得:
令 ,得:
令 ,得:
令 ,得:
整理得:
由 ,故
则:唤李
即,
综合来看,快排的时间复杂度最理想状态与最糟糕状态分别为 、 ,但是对于一般随机情况而言时间复杂度仍为 。
B. 《算法分析与设计》课程讲什么内容
《算法分析与设计》课程是理论性与应用性并重的专业课程。本课程以算法设计策略为知识单元,系统地介绍计算机算法的设计方法和分析技巧。课程教学主要内容包括:第一章,算法概述;第二章,递归与分治策略;第三章,动态规划;第四章,贪心算法;第五章,回溯法;第六章,分支限界法。通过介绍经典以及实用算法让同学掌握算法设计的基本方法。结合实例分析,让同学深入理解算法设计的技巧,以及分析算法的能力。
C. 算法设计与分析的内容简介
本书内容基本上涵盖了目前程序设计竞赛所要掌握的算法,并在书后精选了部分ACM国际大学生程序设计竞赛的题目,供大家练习。
本书可作为计算机科学系、数学系、软件学院等专业本科及研究生课程的教材,特别适合于有志于参加程序设计竞赛的学生学习和训练。
D. 算法设计与分析习题解答(第2版)的目录
第1章算法引论
习题1-1 实参交换
习题1-2 方法头签名
习题1-3 数组排序判定
习题1-4 函数的渐近表达式
习题1-5 O(1)和O(2)的区别
习题1-7 按渐近阶排列表达式
习题1-8 算法效率
习题1-9 硬件效率
习题1-10 函数渐近阶
习题1-11 n!的阶
习题1-12 平均情况下的计算时间复杂性
算法实现题1-1 统计数字问题
算法实现题1-2 字典序问题
算法实现题1-3 最多约数问题
算法实现题1-4 金币阵列问题
算法实现题1-5 最大间隙问题
第2章 递归与分治策略
习题2-1 Hanoi塔问题的非递归算法
习题2-2 7个二分搜索算法
习题2-3 改写二分搜索算法
习题2-4 大整数乘法的O(n1Og(3/2))算法
习题2-5 5次7//3位整数的乘法
习题2-6 矩阵乘法
习题2-7 多项式乘积
习题2-8 不动点问题的O(1O9n)时间算法.
习题2-9 主元素问题的线性时间算法
习题2-10 无序集主元素问题的线性时间算法
习题2-11 O(1)空间子数组换位算法
习题2-12 O(1)空间合并算法
习题2-13 n段合并排序算法
习题2-14 自然合并排序算法
习题2-15 最大值和最小值问题的最优算法
习题2-16 最大值和次大值问题的最优算法
习题2-17 整数集合排序
习题2-18 第k小元素问题的计算时间下界”
习题2-19 非增序快速排序算法
习题2-20 随机化算法
习题2-21 随机化快速排序算法
习题2-22 随机排列算法”
习题2-23 算法qSort中的尾递归
习题2-24 用栈模拟递归
习题2-25 算法se1ect中的元素划分
习题2-26 O(nlogn)时间快速排序算法
习题2-27 最接近中位数的k个数
习题2-28 X和y的中位数
习题2-29 网络开关设计
习题2-32 带权中位数问题
习题2-34 构造Gray码的分治算法
习题2-35 网球循环赛日程表
算法实现题2-1 输油管道问题(习题2-3O)
算法实现题2-2 众数问题(习题2-31)
算法实现题2-3 邮局选址问题(习题2-32)
算法实现题2-4 马的Hami1tOn周游路线问题(习题2-33)
算法实现题2-5 半数集问题
算法实现题2-6 半数单集问题
算法实现题2-7 士兵站队问题
算法实现题2-8 有重复元素的排列问题
算法实现题2-9 排列的字典序问题
……
第3章 动态规划
第4章 贪心算法
第5章 回溯法
第6章 分支限界法
第7章 概率算法
第8章 NP完全性理论
第9章 近似算法
第10章算法优化策略
第11章 在线算法设计