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

自己研究编了一个数组去重的函数,看到过其他人编写的,不过大多数都是已付出很大的存储空间为代价,于是自己编写了一个函数,有好的意见或思想欢迎和我一起分享!

#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;
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。