简单查重算法(c语言)

1.原理

让第一个元素和后面的比较,如果相等,把尾元素与其交换然后尾元素变为0.

2.实现

主函数

int main()
{
    //任给一个数组
    int arr[20] = { 1,3,2,7,4,3,1,7,9,11,2,12,34,2,9,4,15,26,29,26 };
    //计算它的元素个数
    int n = sizeof(arr) / sizeof(arr[0]);
    //定义一个函数,count是用来接收重复元素的个数,Rde就是消重函数
    int count=Rde(arr, n);
    //打印消重后的元素
    for (int i = 0; i < 20-count; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

Rde函数

//指针接收首元素的地址,n接收元素个数
int Rde(int* arr, int n)
{
    //定义一个count用力记录重复元素的个数
    int count = 0;
    //和冒泡排序一样,一个大流程(及让某个元素和后面的所有元素依次比较完一轮)
    //的执行次数要比元素个数小1,当有重复数字被减去时执行次数要减count
    for (int i = 0; i < n - count-1; i++)
    {
        //j是被比元素,i是比较元素,为避免元素自身进行比较,把j的初始化设为i+1
        //j要一直比到最后一个元素(初始下标为n-1),所以当有数组中有元素被减去时n要-count
        for (int j = i + 1; j < n - count; j++)
        {
            //往后比较,当有重复元素让下标为n-1(当有元素被减去时最后一个元素就是n-count-1)
            //替换arr[j],然后把最后一个元素设置为0,同时count要++以记录重复元素的个数
            if (arr[i] == arr[j])
            {
                arr[j] = arr[n-count-1];
                arr[n-count-1] = 0;
                count++;
            }
        }
    }
//返回一个count及重复元素的个数,n-count就是不重复的元素
    return count;
}

3.总结

 

这是一个简单的消重,效率不是很高,但很简单。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值