我的程序应该计算数组中有多少个唯一值。到目前为止,我已按升序对数组进行排序(只是为了使用不同的算法),并且正在尝试计算每个唯一值有多少个值(4,4,4,4,2,3,2其中2是2和3是1)。
我有一个示例数组,我一直在测试它,它由数字1-10组成,但我的for循环只会达到计数8.这可能是显而易见的,但是现在我只是在试图找到错误。
受影响的代码片段:
索引=数组的大小
for (int i = 0; i < index; i++)
{
uniqueness = true;
for (int l = 0; l < index; l++)
{
if (numbers[i] == temporary[l])
{
uniqueness = false;
}
}
if (uniqueness)
{
temporary[i] = numbers[i];
number_amount = 0;
for (int j = 0; j < index; j++)
{
if (numbers[j] == temporary[i])
{
number_amount++;
}
}
Output(temporary[i], number_amount);
}
}
答案 0 :(得分:0)
/ *从数组中查找唯一编号对数组* /
进行排序后int arr = [ 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 7, 9];
int unique[arr.length];
int arrCount = 0;
for (int i = 0; i < arr.length;) {
bool isUnique = true;
int currentIndex = i + 1;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
isUnique = false;
} else {
currentIndex = j;
break;
}
}
i = currentIndex;
if (isUnique) {
unique[arrCount]=arr[i - 1];
arrCount++;
}
}
enter code here
答案 1 :(得分:-1)
对于你所有的for循环,它应该是&#34;&lt; = index&#34;而不是&#34;&lt;索引&#34;,考虑到您已设置索引。这是因为它只会循环,直到达到低于索引(&lt; index)的值,而不是索引本身(&lt; = index)。