zoukankan      html  css  js  c++  java
  • 1.合并两个数组,并保持仍然有序。2.删除合并后数组中的重复元素

     1 #include <stdio.h>
     2 /*
     3 题目:1.合并两个有序数组到第三个中去,并使其依然保持有序  2.删除重复的元素
     4 思路:a.分别测出二个数组的长度,将两个数组的长度之和作为第三个数组的长度
     5       b.比较二个数组元素的大小,小的放入第三个数组,直至某一个数组为空,将另外一个不为空的数组剩下的元素追加到第三个数组
     6         后面即可
     7       c.删除重复的元素。另外定义一个数组,长度<=当前数组,但是不知道具体有几个重复的元素,所以长度设置成原数组的长度。
     8       d.原数组的第一个元素不用比较,直接放进第二个数组中的第一个元素中。原数组的第二个元素和第一个元素如果相同,不用放入第二个数组
     9         如果不同放入第二个数组
    10 */
    11 #define M 4
    12 #define N 6
    13 int main(void)
    14 {
    15     int a[M] = {1,2,3,4};
    16     int b[N] = {2,3,5,6,7,8};
    17     
    18     int c[M+N],i,j,k;
    19     i = j = k = 0;
    20     
    21     while(i<M&&j<N)//如果一个数组为空就退出循环    
    22     {
    23         if(a[i]<=b[j])
    24             c[k++] = a[i++];
    25         else
    26             c[k++] = b[j++];
    27     }
    28     while(i<M)//a数组不为空
    29         c[k++] = a[i++];    
    30     while(j<N)//b数组不为空
    31         c[k++] = b[j++];
    32     for(k = 0;k<M+N;k++)
    33     {
    34         printf("%d	",c[k]);
    35     }
    36     putchar(10);
    37     
    38     printf("--------------删除重复的元素----------------
    ");
    39     int d[M+N];
    40 
    41     d[0] = c[0];//第一个元素直接放入第二个数组
    42     i = 1,j = 1;
    43     while(i<M+N)
    44     {
    45         if(c[i] != c[i-1])
    46         {
    47             d[j++] = c[i];//如果不同放入第二个数组。
    48         }
    49         i++;
    50     }
    51 
    52     for(i = 0;i<j;i++)
    53     {
    54         printf("%d	",d[i]);
    55     }
    56     putchar(10);
    57     return 0;
    58 }
  • 相关阅读:
    自我学习——javascript——基本技巧
    Edge Code CC卡死原因
    Django中ORM介绍和字段及字段参数
    Web框架本质及第一个Django实例
    Python连接MySQL数据库之pymysql模块使用
    Bootstrap框架
    jQuery快速入门
    前端基础之BOM和DOM
    前端基础之JavaScript
    前端基础之CSS
  • 原文地址:https://www.cnblogs.com/wangchaomahan/p/9655846.html
Copyright © 2011-2022 走看看