当前课程知识点:数据结构(下) > 第九章 词典 > (e)桶/计数排序 > 09E-3 计数排序
没错 根据我们此前的定义 这个积分值也就是
包括它所对应的那个字母在内
以及相对而言 更小的那些字母
在输入序列中 所出现次数的总和
而这个总和 也就给出了对应的这个字母
在有序的输出序列中 所对应的位置
或者更一般地 如果这个字母出现多次
也就是它在最终有序序列中 所分布的区间
以这里的字母F为例 它总共出现了一次
而对应的积分值为6
这就说明在输入序列中 小于G的字母应该恰为6个
因此 作为这些字母中的最大者F
也自然应该被放在编号为5的位置
没错 5
因为从0到5恰好是6个小于G的字母
而同样的道理 因为字母G所对应的积分值为8
所以输入序列中的这两个字母G
在最终的有序序列中
自然地 也就应该被归入至6到8之间的这个区间了
具体地 也就是6和7这两个单元
由此可见 只要我们能够得到每个字母的统计值以及累计值
就可以根据相邻字母的累计值
确定其在输出序列中所应处的区间范围
刚才已经分析过
散列表count 可以在线性时间内计算而得
那么 累计值散列表accumulation呢?
我们说 它的建造只需要O(m)的时间
也就是说 每个单元只需常数
你能看出具体的算法吗?
是的 只需从头到尾 线性扫描一遍即可
首先是 字母A所对应的第一个桶单元
我们可以直接 用它的统计值作为它的累计值
接下来 是字母B
我们可以在A的积分值的基础上
累计上B的统计值 从而得到B的积分值
再接下来的字母C呢 也是如此
也就是说 将B的积分值再加上C的统计值
也就得到了C的积分值
以下完全同理
由此可见 整个的计算过程
无非是从第一个字母开始 依次地向后递推
而每一步递推的算法模式 都是一样的
也就是将前一项 累计上后一项的统计值从而得到后一项
累计 更新
累计 更新
累计 更新
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试