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

来源:互联网 发布:中国联通大数据 编辑:程序博客网 时间:2024/05/07 13:56
自己研究编了一个数组去重的函数,有好的意见或思想欢迎和我一起分享!

 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     else39       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 }

 

0 0
原创粉丝点击