zoukankan      html  css  js  c++  java
  • 将两个整型数组按照升序排列,并且过滤掉重复数组元素

    解题思路:

      1. 先将两个数组进行合并,可以利用C语言的memcpy函数进行;

      2. 将新数组进行冒泡排序;

      3. 过滤掉重复元素;

    代码如下:

    #include <stdlib.h> #include<string.h>

    //冒泡排序

    void sortArray(int * inArr, int arrCount)

    {    

       int i = 0;    

      for (int k = 0; k < arrCount - 1; k++)    

      {        

        for (int p = 0; p < arrCount - k - 1; p++)        

        {            

           if (inArr[p] > inArr[p + 1])            

          {                

             int temp = inArr[p];                

            inArr[p] = inArr[p + 1];                

             inArr[p + 1] = temp;            

          }        

        }    

      }

    }

    /* function:merge two arrays into one new array and sort its element by asc, then filter the dunplicate elements.

    input:int * pArray1 :整型数组1 int iArray1Num:数组1元素个数 int * pArray2 :整型数组2 int iArray2Num:数组2元素个数

    输出:int * pOutputArray:合并后的数组 int * iOutputNum:合并后数组元素个数

    返回:void */

    void CombineBySort(int * pArray1, int iArray1Num, int * pArray2, int iArray2Num, int * pOutputArray, int * iOutputNum)

    {        

      if (pArray1 == NULL || pArray2 == NULL || pOutputArray == NULL || iOutputNum == NULL) return;    

       if (iArray1Num == 0 && iArray2Num == 0) return;    

      int *  pTempArray = (int *)malloc(sizeof(int) * (iArray1Num + iArray2Num));    

       if (pTempArray == NULL) return;    

      memcpy(pTempArray, pArray1, iArray1Num * sizeof(int));    

       memcpy(pTempArray + iArray1Num, pArray2, iArray2Num * sizeof(int));    

      sortArray(pTempArray, (iArray1Num + iArray2Num));    

      //进行了数组剔除,并且赋值给输出数组中    

      int idx = 0;    

      pOutputArray[0] = pTempArray[0];    

      for (int q = 1; q < iArray1Num + iArray2Num; q++)    

      {        

         if (pOutputArray[idx] == pTempArray[q]) continue;        

        idx++;        

        pOutputArray[idx] = pTempArray[q];    

      }    

      *iOutputNum = idx + 1;    

       free(pTempArray);

         return;

    }

  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/kennyael/p/10005486.html
Copyright © 2011-2022 走看看