自己研究编了一个数组去重的函数,看到过其他人编写的,不过大多数都是已付出很大的存储空间为代价,于是自己编写了一个函数,有好的意见或思想欢迎和我一起分享!
#include <stdio.h>
#include <string.h>
#define MAX_FRIEND 100
int repeats_num[MAX_FRIEND];
/*升序排序*/
int comp_int_inc(void *a,void *b)
{
return ( *((int *)a) - *((int *)b) );
}
/*
** 作用 : 去除数组中重复的数据
** 输入 : arr_size : 元数组元素个数
** 返回 :去除重复数据后,新数组中元素的个数
*/
int remove_repeat(int int_arr[],int arr_size)
{
int i,j = 0,arr_newsize = 0;
int zeroFlag = 0;
if(arr_size == 1) //只有1个元素时直接返回
return 1;
memset(repeats_num,0,MAX_FRIEND);
qsort(int_arr,n,sizeof(int_arr[0]),comp_int_inc); //讲数组按升序排序
for( i = 0; i < arr_size - 1; i++)
{
if( int_arr[i] != int_arr[i + 1] )
{
int_arr[j] = int_arr[i];
j++;
arr_newsize++;
}
else
repeats_num[j]++; //记录新数组中的元素在元数组中重复次数
}
int_arr[j] = int_arr[arr_size - 1]; //录入最后一个元素,同时解决数组元素全相同的情况
arr_newsize++;
memset(int_arr + arr_newsize,0,sizeof(int) * (arr_size - arr_newsize)); //清空元素组后面多余的元素
return arr_newsize;
}