zoukankan      html  css  js  c++  java
  • 自己编写一个数组去掉重复元素的函数

    自己研究编了一个数组去重的函数,有好的意见或思想欢迎和我一起分享!

     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 }
    我是一块砖,哪里需要往哪搬。
  • 相关阅读:
    Windows环境下OpenLDAP安装配置
    jobcenter在Windows下连携LDAP
    OpenLDAP搭建
    Go 函数 #3
    Go 数组/多维数组/切片/map #2
    Go内置类型/变量/常量 #1
    git常用命令
    makefile基础_1
    kubernete的service
    配置开发环境
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/4313882.html
Copyright © 2011-2022 走看看