当前课程知识点:数据结构(下) > 第九章 词典 > (e)桶/计数排序 > 09E-2 桶排序
这里最基本的一个思路就是运用散列表
在这里既然考虑的只是英文字母
所以各元素的取值无非26种可能
因此我们只需将表长M取作为26
并相应的建立这样一个散列表
而其中的各个桶单元呢
则依次对应于abc一直到z这26个字母
在建立了这样一个散列表之后
我们的第一项任务就是来填充名为count的这一行
顾名思义 其中的每一个元素都是一个计数器
分别记录其所对应的那个字母
在输入序列中所出现的次数
比如 这个2就意味着对应的字母G
在输入序列中总共出现了2次
相应的 B只出现了1次
而A H K之类的字母根本就没有出现
当然 这里的5也意味着M在输入序列中总共出现了5次
我们不妨来确认一下
1 2 3 4和5 不多不少
那么 由输入序列如何快速的得到这样一张统计表呢
我说如果输入的规模为n
那么我们应该可以在O(n)的线性时间内完成这个任务
你能想出具体的方法吗
没错 只需遍历一次整个输入集
在此过程中 每遇到一个字符
就对它所对应的那个计数器做累加
形象的说 这样一个过程就犹如
将所有的元素分别扔到它所对应的桶单元中
因此这一步骤也称作分配 distribution
在这幅图中 请留意蓝色的折线
它是什么呢
没错 这条折线恰恰就对应于刚才我们的统计结果
然而这还不是我们最终所需要的
我们还需要什么呢
这条红色的折线
此前的那条蓝色折线被称作count
是因为它反映了各字符在输入序列中出现的次序
而新的这条红线呢 则称作accumulation
这暗示着它是某种累计值
没错 累计值
更精确的说 这条红色折线上的任何一个点
其实都对应于蓝色折线至此之前的所有数值的积分
既然蓝色折线是非负的
所以作为它的积分 这条红色折线是单调非降的
那么红色折线上的这样每一个积分值具体又是什么含义呢
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试