【发布时间】:2016-02-20 03:04:26
【问题描述】:
我正在阅读和学习基数排序的 Java 实现,如下所示。如果有人能阐明pointTo、index 和globalPtr 的逻辑含义,那就太好了。
https://www.hackerrank.com/challenges/string-similarity/editorial
private void radixSort0() {
globalPtr = 0;
Arrays.fill(bucketHead, -1);
Arrays.fill(next, -1);
for (int i = 0; i < n; i++) {
int value = nr0[index[i]];
if (bucketHead[value] == -1) bucketHead[value] = bucketTail[value] = globalPtr;
else bucketTail[value] = next[bucketTail[value]] = globalPtr;
pointTo[globalPtr++] = index[i];
}
int ptr = 0;
for (int i = 0; i < M; i++)
for (int j = bucketHead[i]; j != -1; j = next[j])
index[ptr++] = pointTo[j];
}
【问题讨论】:
-
不要发布hackerrank问题以获得答案,最好尝试一些东西并发布您的代码以进行一些修改。快乐编码
-
永远不要模仿那种风格来命名、(不)评论、代码、程序。简单的部分是
globalPtr:下一个要分配的索引。 hackerrank的链接需要登录——内容和lydxlx's一样吗? -
谢谢@greybeard,那么pointTo的逻辑意义是什么?
-
(请说明github link 是否相关。)该部分是附加到单链表的末尾,使用附加级别的(去)索引。我还没有真正试图弄清楚是否需要这样做:
radixSort0中使用的许多东西都是预设的或在外面使用的。 (如果这是接近 lydxlx 的代码,globalPtr, pointTo, bucketHead, bucketTail和next也可能是 radixSort0&1 的本地代码。)如果此代码的基础不是来自算法教科书,我会感到惊讶。 -
(我会考虑一下代码,可能是在睡了一晚之后。)
标签: java algorithm sorting radix-sort