您好我想了解基数排序的逻辑,我指的是维基百科的代码。这是接收数组的排序的排序函数,以及元素的数量。虽然代码运行得很好,但我无法理解代码的逻辑。在 while 循环中,我们首先初始化一个 10 位的桶数组,其中包含 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();
}
}
谁能帮我这个?谢谢