码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-04 18:57:26      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

标签:

原文地址:http://www.cnblogs.com/daimadebanyungong/p/4313882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!