当前课程知识点:数据结构(下) > 第十二章 排序 > (b3)选取:通用算法 > 12b3-4: linearSelect:性能分析A
接下来
我们就来对linearselect算法的复杂度
做一界定
按照我们的习惯
将该算法所对应的运行时间
记作Tn
以下我们对照这个算法的各个步骤
分别进行估算
首先是作为递归基的第0步
我们讲过当问题的规模
已经降致足够小时
我们将直接采用任何一种
频繁的算法
比如直接借助排序的方法
当然所对应的时间复杂度
也自然就是Q logQ
然而因为这里的Q是取作一个常数
所以QlogQ实质上也是一个常数
我们再来看算法有效的第一步
也就是对整个集合的均分
如果数据集合表示为序列
那么这一步只需对整个序列
做一趟线性的扫描
因此我们也只需线性的时间
接下来是对每一组元素进行排序
并进而找出其中的中位数
同理因为此时每个子序列的长度
都不超过Q
因为我们也可以认为
每个子序列的排序
都可以在常数时间内完成
考虑到总共有7除以Q个子序列
因此所有这些子序列的排序
以及从中找出中位数
累计所需要的时间
也依然不过是线性
再来考察第三步
也就是从上一步所得到的
N除以Q个中位数中
递归的去找到全局的中位数
也就是那个大写的M
我们知道这一步是通过递归来完成的
但问题的规模已经缩减到N除以Q
所以对应的时间复杂度
也可以表示为T n除以Q
在接下来的第四步
是根据全局中位数
将整个集合划分为三个子集
并分别计数 不难看出
只需一趟线性扫描
这项工作既可完成
因此这一步所需要的时间
累计也不过线性
以下是最关键的第五步
这一步的任务是递归的求解
规模已经缩小的新问题
在这里我们宣称
无论如何新问题的规模
都会得到有效的压缩
具体来说
它们的规模至多是原问题的75%
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试