gpt4 book ai didi

java - Java 基数排序

转载 作者:行者123 更新时间:2023-12-02 00:53:55 25 4
gpt4 key购买 nike

欢迎。我有一个基数排序方法,它使用一个数组来遍历,但必须有另一个数组(bin)来存储在一个空队列中。我很困惑如何为垃圾箱排队。我还有一个 findPlace 方法,可以在调用时找到每个数字的位置。所以,这就是我得到的。有人可以帮我找到我缺少的东西吗?非常感谢您的宝贵时间。

public static void radix(int [] list){
int [] bin = new int[10];
ArrayQueue<Integer> part = new ArrayQueue<Integer>(); // EDIT What would I do with this queue??
int num = 0;
for(int i=0;i<list.length;i++)
{
bin[i] = 0;
}

for(int pass=0;pass<list.length;pass++)
{
for(int num=0;num<list.length;num++)
{
int digit=findPlace(bin[pass], num);
}

bin[digit].add(list[num]); // add to the bin
}
// Put back into list
for(int h=0; h<10; h++)
{
while(!bin[h].isEmpty())
{
list[num] = bin[queueNum].remove();
num++;
}
}
}


public static int getPlace (int x, int place)
{return x/place % 10;}

我还制作了一个方法来查找存储桶,所以我只需要知道如何将其放入数组中,我会这样做吗?部分.add(getPlace(x, 地点));?

最佳答案

你的数组,bin不会仅仅因为您希望它像队列一样工作:) 数组没有像 add() 这样的方法和remove() 。对于如何解决此问题,您有两种选择:

  • 自行编写正确处理队列的程序:队列由一个数组和两个指向该数组的指针组成,传统上称为 headtail 。您必须编写自己的方法来添加和删除,该方法将与数组和指针一起使用,并处理空队列或溢出队列。

  • 使用Java的内置Queue类。它记录在库的 Javadocs 中。不过,不知道您的作业是否打算让您构建自己的队列。

更新其他详细信息:

您询问如何从数字中提取单个数字。正如维基百科文章中所建议的,从最低有效数字 (LSD) 开始工作是最简单的。为此:

  • 要提取最后一位数字,请执行 digit = number % 10 (这就是模运算)。您将得到一个 0 到 9 之间的整数。
  • 要去掉最后一位数字,只需除以 10。然后就可以去掉另一个数字。
  • 由于您需要多次查看数字的倒数第 n 位数字,因此最好将此功能放入单独的方法中。

您可以使用 0 到 9 选择正确的队列来放置您的号码。

当您将所有号码排入 10 个存储桶后,您需要将它们从那里复制回单个列表中。然后,只要任何数字中仍有未处理的数字,就重复此操作。

关于java - Java 基数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com