こんにちは、基数ソートのロジックを理解しようとしています。ウィキペディアのコードを参照しています。ここでは、配列と要素数を受け取るソートのソート関数を示します。コードは問題なく実行されていますが、コードのロジックを理解できません。while ループ内では、最初に 10 桁のバケット配列を初期化します。これは、配列の最初と 2 番目のインデックスの 1 と 2 の数を保持します。しかしその後、何をしようとしているのかを理解するのは非常に困難です。
static void sort(int a[],int n)
{
int i=0;
int m =a[0];
int b[]=new int[n];
int exp=1;
for (i = 0; i < n; i++)
{
if (a[i] > m)
m = a[i];
}
while (m / exp > 0)
{
int bucket[] =new int[10];
for (i = 0; i < n; i++)
bucket[a[i] / exp % 10]++;
for (i = 1; i < 10; i++)
bucket[i] += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[a[i] / exp % 10]] = a[i];
for (i = 0; i < n; i++)
a[i] = b[i];
exp *= 10;
System.out.println("\nPASS : ");
for(int c:a){
System.out.print(c+",");
}
System.out.println();
}
}
誰でもこれで私を助けることができますか?ありがとう