こんにちは私は私のコードを改善するためにいくつかの助けが必要です。基数ソートを使用して、たとえば10個の数値の配列を昇順で並べ替えようとしています。
サイズ10の配列でプログラムを実行し、10個のランダムな整数を次のように入力すると
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());
}
}
}
}
}
また、関数に1つのキューを引数として取り、戻ったときにそのキューが昇順になるようにすることもできますか?もしそうなら、どのように?
助けてください。私の英語が下手で、上手くいかない場合は申し訳ありません。
詳細が必要な場合はお知らせください。
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]);
}
}
}
これがあなたが話していたことだといいのですが...
ご回答ありがとうございます、調査させていただきます。私のために問題を解決する誰かを探していません。ヘルプとアイデアを探しています。どうすれば解決できますか。
私の仕事ではそれは言う:
キューでソートする整数の基数ソート関数を実装します。関数は引数として1つのキューを取り、戻ったときにそのキューに同じ値が昇順で含まれている必要があります。値は0〜999であると想定できます。
100個の整数をキューに入れて基数ソート関数を使用して並べ替えることはできますか?それとも、数値を配列に入れてから、キューを使用する基数ソート関数に配列する必要がありますか?
数値をIntキューに入れ、そのキューを関数に入れる必要があるように理解しましたが、それは機能しませんでした。
しかし、あなたの答えに感謝しますそれらを見て、私の問題を解決しようとします。しかし、あなたが助けることができると思うならば、コメントを残してください。