前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串排序----键索引记数法

字符串排序----键索引记数法

作者头像
SuperHeroes
发布2018-05-30 17:52:02
9510
发布2018-05-30 17:52:02
举报
文章被收录于专栏:云霄雨霁云霄雨霁

引子:假如老师在统计学生成绩时,要将学生按组号排列,也就是按组1、2、3...分类。这种情况就可以采用键索引计数法。

键索引记数法分为4个步骤:

第一步:频率统计

使用int数组count[]计算每个键(组号)出现的频率,如果键为r,则countr+1++; (注意为什么是r+1).

第二步:将频率转化为索引

使用count[]数组计算每个键在排序结果中的起始位置。一般来说,任意给定键的起始索引均为较小键所出现的频率之和,计算方法为countr+1 += countr; 从左到右将count[]数组转化为一张用于排序的索引表。

第三步:排序

将所有元素移动到一个辅助数组aux[]中进行排序。每个元素在aux[]中对应的位置由它的键对应的count[]决定。在移动之后将count[]中对应的元素值加1,来保证countr总是下一个键为r的元素在aux[]中的索引的位置。这个过程只需遍历一次即可产生排序结果,这种实现方法具有稳定性----键相同的元素排序后会被聚集到一起,但相对位置没有发生改变(后面两种排序算法就是基于此算法的稳定性来实现的)。

第四步:回写

将将排序的结果复制回原数组中。

代码实现见低位优先字符串排序

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 键索引记数法分为4个步骤:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档