C语言数组去重返回数组长度

//去重方法一(arr数组已排序)
int deleteRepitition(int *arr,int len) {//返回去重后的长度,然后根据指针遍历每个元素
    int k = 0;
    for (int i = 0;i<len;i++) {
        if (*(arr+i)-*(arr+i+1)) *(arr+k++) = *(arr+i);
    }
    if (*(arr+len-1) == *(arr+len)) *(arr+k++) = *(arr+len-1);//如果最后一个元素加号和后一个存储空间元素等,则需要单独处理
   return k;
}
//去重方法二
int del(int * arr,int n) {
    int i;
    for (i=0;i<n-1;i++) {
        for (int j=i+1; j<n; j++) {//从arr[i]的下一位开始比较,直到最后一位
            if (arr[i] == arr[j]) {//如果数字重复
                for (int k=j;k<n-1;k++) arr[k] = arr[k+1];//从arr[k]开始,所有数字前移一位
                --n;//数组长度 减 1
                --j;//同时遍历也要减 1
            }
        }
    }
    return n;//返回去重后数组长度
}
//去重方法三(去重输出)
int del(int * arr,int len) {
    for (int i=0;i<len;i++) {
        for (j=0;j<i;j++) if (arr[i]==arr[j]) break;
        if (j==i) {
            printf("%d",arr[i]);
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/cgy-home/p/15077809.html