歡迎。我有一個基數排序方法,它使用數組通過,但必須有另一個數組(bin),它將存儲在一個空隊列中。我很困惑,我會如何爲垃圾桶排隊。我還有一個findPlace方法,可以在調用時查找每個數字的位置。所以,這是我得到的。有人能幫我找到我失蹤的東西嗎?非常感謝您的時間。基數排序Java
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;}
我也發找到斗的方法,所以我只需要知道我會怎麼把它變成一個數組,將我只是這樣做? part.add(getPlace(x,place));?
是的,你必須在你的排序方法中初始化隊列;在那裏創建隊列也可能是一個好主意。至於你的算法,它看起來是錯誤的,但我不夠聰明,說它應該是什麼樣子。 – 2009-11-15 07:32:23
好吧,我讀了維基百科條目,並找到了一個關於如何使用隊列進行基數排序的部分。據此,你不需要1個而是10個隊列。你讀過描述(還是給出了另一種描述),並想出你需要做什麼? –
2009-11-15 08:08:34
是的,但我不想爲你做功課。無論您使用什麼隊列,都可以製作一個10個陣列。另請參閱上面的答案更新。 – 2009-11-15 19:13:09