黑马程序员技术交流社区

标题: 关于数组 [打印本页]

作者: 余尚勇    时间: 2013-5-24 11:44
标题: 关于数组
本帖最后由 余尚勇 于 2013-5-27 09:47 编辑

一个一维数组a和一个一维数组b,分别有m,n个下标变量,并且全数组中的元素都是严格递增的,编一个程序,将数组a和数组b合并成数组c,使数组c也严格递增,注意在数组a和数组b中有相同的元素时只保留一个。如何实现?
作者: huaruibang    时间: 2013-5-24 14:17
本帖最后由 huaruibang 于 2013-5-24 14:23 编辑
  1. 例如: a[m]={3,2,1};   b[n]={5,3,1};

  2. 首先 从算法 角度分析: 假设 a[i]代表 a中的 数字 b[j] 代表 b中数字,i j分别初始化为0
  3. 就存在 3种情况:
  4. ①a[i]>b[j]
  5. ②a[i]==b[j]
  6. ③a[i]<b[j]


  7. 第1种情况下: 将a[i] 扔到 c中,i指针++;
  8. 第2种情况下: 将b[j] 扔到 c中,j指针++;i指针++
  9. 第3种情况下: 将b[j] 扔到 c中,j指针++;

  10. 而控制 循环的条件  i<=3 and j<=3
复制代码

作者: huaruibang    时间: 2013-5-24 14:26
本帖最后由 huaruibang 于 2013-5-24 14:29 编辑

  1. 手写代码 未调试 大体就是这意思
  2. i=0;
  3. j=0;
  4. temp=0;
  5. while (i<=3 || j<=3)
  6. {
  7.     if(a[i]>b[j])
  8.    {
  9.       c[temp++]=a[i];
  10.       i++;
  11.      break;
  12.    }
  13.   if(a[i]<b[j])
  14. {
  15.    c[temp++]=b[j];
  16.       j++;
  17.       break;
  18. }
  19. if(a[i]==a[j])
  20. {
  21.      c[temp++]=b[j];
  22.       j++;
  23.       i++;
  24.       break;
  25. }
复制代码

作者: 余尚勇    时间: 2013-5-27 09:44
huaruibang 发表于 2013-5-24 14:26

明白了,谢谢,写的简单明了
作者: 余尚勇    时间: 2013-5-27 09:45
huaruibang 发表于 2013-5-24 14:26

明白了,谢谢,写的简单明了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2