Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以下内容如何实现:arrayName[x]++;;工作以及在以下上下文中它输出了什么?_Java_Arrays - Fatal编程技术网

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.