自己编写一个数组去掉重复元素的函数

自己研究编了一个数组去重的函数,有好的意见或思想欢迎和我一起分享!

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define MAX_FRIEND 100
 5 
 6 int repeats_num[MAX_FRIEND];
 7 
 8 /*升序排序*/
 9 int comp_int_inc(void *a,void *b)
10 {
11     return ( *((int *)a) - *((int *)b) );
12 }
13 
14 /*
15 ** 作用 : 去除数组中重复的数据
16 ** 输入 : arr_size : 元数组元素个数
17 ** 返回 :去除重复数据后,新数组中元素的个数
18 */
19 int remove_repeat(int int_arr[],int arr_size)
20 {
21     int i,j = 0,arr_newsize = 0;
22     int zeroFlag = 0;
23 
24   if(arr_size == 1) //只有1个元素时直接返回
25   return 1;
26 
27   memset(repeats_num,0,MAX_FRIEND);
28   qsort(int_arr,n,sizeof(int_arr[0]),comp_int_inc); //将数组按升序排序
29 
30   for( i = 0; i < arr_size - 1; i++)
31   {
32     if( int_arr[i] != int_arr[i + 1] )
33     {
34       int_arr[j] = int_arr[i];
35       j++;
36       arr_newsize++;
37     }
38     else
39       repeats_num[j]++; //记录新数组中的元素在元数组中重复次数
40   }
41 
42   int_arr[j] = int_arr[arr_size - 1]; //录入最后一个元素,同时解决数组元素全相同的情况
43   arr_newsize++;
44 
45   memset(int_arr + arr_newsize,0,sizeof(int) * (arr_size - arr_newsize)); //清空元素组后面多余的元素
46 
47   return arr_newsize;
48 }

 

转载于:https://www.cnblogs.com/daimadebanyungong/p/4313882.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值