无序数组去重的实现,需要借助,区间元素的查找(find(e, lo, hi)),指定位置的删除(remove(r))。
int size = 10; // 全局变量,指示数组的长度
// 区间的查找
int find(int A[], int x, int lo, int hi){
while (--hi >= lo && x != A[hi]);
return hi;
}
// 指定位置的删除
int remove(int A[], int r){
int e = A[r];
for (int i = r+1; i < size; ++i)
A[i-1] = A[i];
--size;
return e;
}
// 去重
int deduplicate(int A[]){
int oldSize = size;
int i = 1;
while (i < size){
find(A, A[i], 0, i) < 0 ? ++i : remove(A, r);
}
return oldSize - size;
}