设计一个算法在一个包含有n个整数的数组a中,删除多余的重复整数。
其思路是逐步扩大不重复区。算法开始假设a[0]为不重复区的唯一一个元素,用k指示,k永远指示不重复区的最后一个数据的索引。然后用i=1,2,....,n-1检测后面的每一个整数是否与不重复区中的整数有重复,若没有重复,将该整数放到不重复区的末尾,同时更新k(k+1,把该整数移动到k位置);若有重复则i+1继续检测下一个整数。
int delRedundance(int a[], int n)
{
int i, j, k=0;
for (i = 1; i < n; i++)
{
for (j = 0; j <= k; j++)
if (a[i] == a[j]) break;
if (j > k&&++k != i)
a[k] = a[i];
}
for (i = 0; i <= k; i++) cout << a[i] << endl;
return k + 1;
}