我遇到了一个问题,理论上应该从数组中删除所有重复值的函数不起作用。以下是它的工作原理:
- 我有两个数组,然后我用 0 到 50 之间的随机数填充它们。
- 我使用排序函数对数组值进行排序
- 然后我运行我的重复数据删除功能
- 我再次按顺序对数组值进行排序
- 然后我输出两个数组中的值
问题是,重复数据删除函数中的循环运行了 19 次,无论它找到多少重复条目,这非常奇怪。此外,它仍然给出重复项。
有任何想法吗?谢谢!
int* dedupe(int array[ARRAY_SIZE]) //remove duplicate array values and replace with new values.
{ bool dupe = false;
while(dupe!=true)
{
for(int j=0; j<ARRAY_SIZE; j++)
{ if(array[j] == array[j+1])
{ array[j] = rand();
array[j] = array[j] % 51;
dupe = false;
}
else { dupe = true; // the cout part is for debugging
cout << dupe << endl; }
}
} return array;
}
int main()
{
int a[9], b[9];
srand(time(0));
populate(b);
populate(a);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
dedupe(a);
dedupe(b);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
for(int i=0; i<10; i++)
{ cout << "a[" << i << "] = " << a[i] << "\t\t" << "b[" << i << "] = " << b[i] << endl; }
return 0;
}
到目前为止,没有任何建议可以解决问题。有谁知道解决方案?