下面是用于非递减顺序排序数字代码:这句话做什么“while(a [i] - != 0)”?
#include<stdio.h>
#include<stdlib.h>
# define size 1000001
static int a[size];
int main()
{
int t, k, i;
scanf("%d", &t);
for(i = 0; i < t; i++)
{
scanf("%d", &k);
a[k] += 1;
}
for(i = 0; i < 1000001; i++)
{
while(a[i]-- != 0)
printf("%d\n", i);
}
return 0;
}
这将是很大的帮助真的,如果有人可以在代码向我解释。我已经通过了代码,我不知道它如何对数字进行排序。在任何地方都没有交换,但仍然可以在C++编辑器中使用。
了解它的第一步 - 正确缩进它。 – Dukeling
这看起来很简单[Counting Sort](https://en.wikipedia。org/wiki/Counting_sort),如果你输入一个大于1000000的值,它会覆盖无辜的记忆。 – Blastfurnace
我会简单地写'while(a [i] - )'而不是'while(a [i] - ! = 0)'。但我个人更喜欢'while(a [i] - > = 0)'。因为在while(a [i] - != 0)时,当输入值具有负整数时,我遇到了无限循环问题。 – thefourtheye