C Tricks(六) —— 数组去重的实现

来源:互联网 发布:JAVA http post 多附件 编辑:程序博客网 时间:2024/05/22 12:52

无序数组去重的实现,需要借助,区间元素的查找(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;}
0 0
原创粉丝点击