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


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

     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 }
    我是一块砖,哪里需要往哪搬。
  • 相关阅读:
    Linux-安装FFmpeg
    博客园添加视频
    博客园添加音乐
    通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记
    根据不同配置.env获取不同的配置文件的配置
    1M大概多少个字
    计算机存储单位
    DNS原理及其解析过程
    查看到百度经过了多少个网关
    C语言的本质(18)——函数的可变参数
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/4313882.html
Copyright © 2020-2023  润新知