首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基数排序码混淆

基数排序码混淆
EN

Stack Overflow用户
提问于 2013-08-26 22:11:33
回答 1查看 294关注 0票数 2

关于这个问题,我有个问题:

(幻灯片拍摄从这里开始。)

代码语言:javascript
运行
复制
int N = a.length;
int[] count = new int[R];
for (int i = 0; i < N; i++)
 count[a[i]+1]++;
for (int k = 1; k < 256; k++)
 count[k] += count[k-1];
for (int i = 0; i < N; i++)
 temp[count[a[i]++]] = a[i]
for (int i = 0; i < N; i++)
 a[i] = temp[i];

有人能详细介绍一下第三个for循环吗?我们将记录从a[]转移到temp[]?

我知道,在我们累积计数后,它们应该是某种抵消。这样我们就可以在temp[]中适当的位置插入字母。

我只是不知道ai++在里面做什么。(<-问题)我知道在计数数组中引用字母的位置,但是为什么我们也要增加字母呢?我们换信了吗?谢谢。

感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 22:21:48

它看起来像是一个错误:应该是:

代码语言:javascript
运行
复制
temp[count[a[i]]++]

下一个元素应该进入下一个空空间。

在step1准备将type_i计数添加到cnt_{i+1}中,这样可以为type_i元素留出空间.

step2是计数的前缀

step3使用计数作为R索引指针,并将a中的所有元素发送到其最终目的地。

这个步骤保持不变:

  • count[ x ]指向可以放置type_x元素的下一个空空间(或者输入中不再有x元素)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18453886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档