您的位置:首页 > 其它

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

2015-03-04 17:24 627 查看
自己研究编了一个数组去重的函数,有好的意见或思想欢迎和我一起分享!

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐