嗨,我需要一些帮助来改进我的代码。我正在尝试使用 Radixsort 按升序对 10 个数字的数组(例如)进行排序。
当我使用大小为 10 的数组运行程序并将 10 个随机 int 数放入 like
70
309
450
279
799
192
586
609
54
657
我明白了:
450
309
192
279
54
192
586
657
54
609
看不到我的错误在代码中的位置。
class IntQueue
{
static class Hlekkur
{
int tala;
Hlekkur naest;
}
Hlekkur fyrsti;
Hlekkur sidasti;
int n;
public IntQueue()
{
fyrsti = sidasti = null;
}
// First number in queue.
public int first()
{
return fyrsti.tala;
}
public int get()
{
int res = fyrsti.tala;
n--;
if( fyrsti == sidasti )
fyrsti = sidasti = null;
else
fyrsti = fyrsti.naest;
return res;
}
public void put( int i )
{
Hlekkur nyr = new Hlekkur();
n++;
nyr.tala = i;
if( sidasti==null )
f yrsti = sidasti = nyr;
else
{
sidasti.naest = nyr;
sidasti = nyr;
}
}
public int count()
{
return n;
}
public static void radixSort(int [] q, int n, int d){
IntQueue [] queue = new IntQueue[n];
for (int k = 0; k < n; k++){
queue[k] = new IntQueue();
}
for (int i = d-1; i >=0; i--){
for (int j = 0; j < n; j++){
while(queue[j].count() != 0)
{
queue[j].get();
}
}
for (int index = 0; index < n; index++){
// trying to look at one of three digit to sort after.
int v=1;
int digit = (q[index]/v)%10;
v*=10;
queue[digit].put(q[index]);
}
for (int p = 0; p < n; p++){
while(queue[p].count() != 0) {
q[p] = (queue[p].get());
}
}
}
}
}
我也在想我可以让函数将一个队列作为参数,并且在返回时该队列按递增顺序排列吗?如果有怎么办?
请帮忙。抱歉,如果我的英语不好,我的英语不太好。
如果您需要更多详细信息,请告知。
import java.util.Random;
public class RadTest extends IntQueue {
public static void main(String[] args)
{
int [] q = new int[10];
Random r = new Random();
int t = 0;
int size = 10;
while(t != size)
{
q[t] = (r.nextInt(1000));
t++;
}
for(int i = 0; i!= size; i++)
{
System.out.println(q[i]);
}
System.out.println("Radad: \n");
radixSort(q,size,3);
for(int i = 0; i!= size; i++)
{
System.out.println(q[i]);
}
}
}
希望这就是你所说的......
谢谢你的回答,我会调查的。不是找人帮我解决问题。寻求帮助和想法我如何解决它。
在我的任务中它说:
为使用队列排序的整数实现基数排序函数。该函数应将一个队列作为参数,并在返回时该队列应包含按升序排列的相同值 您可以假设这些值介于 0 和 999 之间。
我可以在我的队列上放 100 个 int 数字并使用 radixsort 函数对其进行排序,还是我需要将数字放入数组中,然后将数组放入使用队列的 radixsort 函数中?
我理解它就像我需要将数字放入 Int 队列并将该队列放入函数中但没有奏效。
但是感谢您的回答会查看它们并尝试解决我的问题。但是,如果您认为可以提供帮助,请发表评论。