Java Radixsort算法-散布和聚集方法

Java Radixsort算法-散布和聚集方法,java,algorithm,function,sorting,methods,Java,Algorithm,Function,Sorting,Methods,我有一个作业,我必须读取一个文件,将每一行作为循环链表中的一个节点,然后运行scatter()和gather()方法。我并没有特别要求任何代码,而是在可视化概念方面遇到了困难。如果有人能帮我澄清术语,我会提供给我的指导请尽量不要给出任何明确给出答案的代码,除非您试图解释一些事情,因为这是学校作业 接下来的两种方法,scatter()和gather()都有问题。以下是他们在文件中提供的意见: /** * Scatters entries of master list (reference

我有一个作业,我必须读取一个文件,将每一行作为循环链表中的一个节点,然后运行
scatter()
gather()
方法。我并没有特别要求任何代码,而是在可视化概念方面遇到了困难。如果有人能帮我澄清术语,我会提供给我的指导请尽量不要给出任何明确给出答案的代码,除非您试图解释一些事情,因为这是学校作业

接下来的两种方法,
scatter()
gather()
都有问题。以下是他们在文件中提供的意见:

/**
     * Scatters entries of master list (referenced by instance field masterListReat) 
     * to buckets for a given pass.
     * 
     * Passes are digit by digit, starting with the rightmost digit -
     * the rightmost digit is the "0-th", i.e. pass=0 for rightmost digit, pass=1 for 
     * second to rightmost, and so on. 
     * 
     * Each digit is extracted as a character, 
     * then converted into the appropriate numeric value in the given radix
     * using the java.lang.Character.digit(char ch, int radix) method
     * 
     * @param pass Pass is 0 for rightmost digit, 1 for second to rightmost, etc
     */
    public void scatter(int pass) {
        // WRITE YOUR CODE HERE
    }

    /**
     * Gathers all the CLLs in all the buckets into the master list, referenced
     * by the instance field masterListRear
     * 
     * @param buckets Buckets of CLLs
     */
    public void gather() {
        // WRITE YOUR CODE HERE
    }   
我已经获得了一个名为
bucket[]
的循环链表数组,它被初始化为
null
。让我困惑的是每个bucket的循环链表的节点中都有什么。有没有人能帮我弄清楚最后两种方法的方向,以及它们到底应该做什么


谢谢。

对于scatter()和gather(),bucket[]是一个与masterListRear类型相同的数组,bucket[]的每个元素都是指向单独循环列表的最后一个节点的指针。

为了帮助理解基数排序的工作原理,让我们描述一下如何使用它对一组卡片进行排序

从一副随机排列的牌开始。这副牌已经彻底洗牌了,但它是整齐的一小叠。你把最上面的牌从牌堆上拿下来看看。这是三颗心。你完全忽略这套衣服,而只使用数字-你把这张卡放在一个指定的所有3的堆栈中。你拿下一张牌。是黑桃皇后。它进入以前空的queens堆栈。你拿下下一张牌,3张梅花牌。你把它放在三颗红心上面。继续这样做,直到你看完整个甲板。最后,你将有13个堆叠,每个堆叠包含4张卡片,所有卡片都有相同的数字/字母,但不同的套装

上一段对应于您的
scatter()
函数

现在你拿起那堆2,把它放回主甲板。然后拿起3个,放在2个上面。然后把4s放在3s之上,然后把5s放在上面,以此类推,直到王牌和王牌。你现在又有了一副单副牌,在西装方面仍然是完全随机的,但在数字/字母方面是完全有序的

上一段对应于您的
gather()
函数

如果您随后重复
scatter()
步骤,但这次是四堆西装,忽略数字/字母,然后重复
gather()
,结果将是一副完全有序的牌


您的代码应该使用数字而不是卡片来执行此操作,每个数字0到9有一个堆栈(或
bucket
)。
pass
参数告诉您按一位数、十位数、数百位数、数千位数分散哪个位数。
gather()
不关心
pass
,它只是将0位放在1位之前,不管涉及哪个位数。

因为这是一个循环链表,类比应该是将卡片正面朝下放置,因此是FIFO排序(这可以保持排序的稳定性)。这是罗格斯大学CS112作业的逐字复制。StackOverflow不是一个提出广泛的家庭作业问题的地方。在某些特定的事情上寻求帮助是可以的,但这是学术欺骗的一种积极形式。@JoeBoyle他请求帮助理解术语和概念,并明确要求不要给出代码。我不认为这是不诚实的,就像要求导师或教授自己做出更好的解释一样。@Douglas我知道他要求代码不要发布。但是问一般性问题(“你能解释一下RadixSort的xx过程吗?我的理解是yy”)和发布整个作业之间有很大的区别。我们不是一个家庭作业问答网站。