Java 以下内容如何实现:arrayName[x]++;;工作以及在以下上下文中它输出了什么?
有一个名为Java 以下内容如何实现:arrayName[x]++;;工作以及在以下上下文中它输出了什么?,java,arrays,Java,Arrays,有一个名为countingSort的程序,下面列出了其中的一段代码,它通过计算a中出现的每个数字的数量来处理整数数组a,然后使用计数将a的元素分配给结果数组result,以确定它们的位置 // returns a sorted copy of a, assuming that it contains // only integers in the range 0 .. k-1 public static int[] countingSort(int[] a, int k) { int[]
countingSort
的程序,下面列出了其中的一段代码,它通过计算a
中出现的每个数字的数量来处理整数数组a
,然后使用计数将a
的元素分配给结果数组result
,以确定它们的位置
// returns a sorted copy of a, assuming that it contains
// only integers in the range 0 .. k-1
public static int[] countingSort(int[] a, int k)
{
int[] counts = new int[k];
for (int x : a)
{
counts[x]++;
}
...
我感到困惑的是行的操作计数[x]++
。我见过双加号用作增量,但在这种情况下从未见过。我想解释一下应用程序countingSort({3,7,1,3,8,2,1},10)
是如何处理的,特别是上面给出的循环结束后数组的状态计数[]
以下是上下文的完整代码:
// returns a sorted copy of a, assuming that it contains
// only integers in the range 0 .. k-1
public static int[] countingSort(int[] a, int k)
{
int[] counts = new int[k];
for (int x : a)
counts[x]++;
int total = 0;
for (int i = 0; i < k; i++)
{
int oldCount = counts[i];
counts[i] = total;
total += oldCount;
}
int[] result = new int[a.length];
for (int x : a)
{
result[counts[x]] = x;
counts[x]++;
}
return result;
}
//返回的排序副本,假设它包含
//仅限范围为0.的整数。。k-1
公共静态int[]计数排序(int[]a,int k)
{
int[]计数=新的int[k];
for(int x:a)
计数[x]++;
int-total=0;
for(int i=0;i
同样,在第三个for
循环中再次使用同一行counts[x]++
基本上,我有两个问题
行的功能是什么计数[x]++
以及它是如何工作的?
如果要处理的应用程序是
计数排序({3,7,1,3,8,2,1},10)
,那么计数[]
数组在循环的第一个末尾的状态是什么?
计数[x]+
将增加数组计数的索引x
处存在的数字
使用此信息,可以很容易地预测第一个for循环之后的值
counts[x]++
相当于以下内容
int i = count[x];
i++;
count[x] = i;
第一次实例化计数时,计数中的所有项都为0
如果要处理的申请是countingSort({3,7,1,3,8,2,1},10)
结果将是
[0, 2, 1, 2, 0, 0, 0, 1, 1, 0] // two copies of 1 and 3, one copy of 2,7,8.