A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余尚勇 中级黑马   /  2013-5-24 11:44  /  1787 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余尚勇 于 2013-5-27 09:47 编辑

一个一维数组a和一个一维数组b,分别有m,n个下标变量,并且全数组中的元素都是严格递增的,编一个程序,将数组a和数组b合并成数组c,使数组c也严格递增,注意在数组a和数组b中有相同的元素时只保留一个。如何实现?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 鼓励

查看全部评分

4 个回复

倒序浏览
本帖最后由 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 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
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 不错

查看全部评分

回复 使用道具 举报
huaruibang 发表于 2013-5-24 14:26

明白了,谢谢,写的简单明了
回复 使用道具 举报
huaruibang 发表于 2013-5-24 14:26

明白了,谢谢,写的简单明了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马