自己研究编了一个数组去重的函数,有好的意见或思想欢迎和我一起分享!
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 }