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

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

 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