黑马程序员技术交流社区
标题:
关于数组
[打印本页]
作者:
余尚勇
时间:
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 编辑
例如: a[m]={3,2,1}; b[n]={5,3,1};
首先 从算法 角度分析: 假设 a[i]代表 a中的 数字 b[j] 代表 b中数字,i j分别初始化为0
就存在 3种情况:
①a[i]>b[j]
②a[i]==b[j]
③a[i]<b[j]
当
第1种情况下: 将a[i] 扔到 c中,i指针++;
第2种情况下: 将b[j] 扔到 c中,j指针++;i指针++
第3种情况下: 将b[j] 扔到 c中,j指针++;
而控制 循环的条件 i<=3 and j<=3
复制代码
作者:
huaruibang
时间:
2013-5-24 14:26
本帖最后由 huaruibang 于 2013-5-24 14:29 编辑
手写代码 未调试 大体就是这意思
i=0;
j=0;
temp=0;
while (i<=3 || j<=3)
{
if(a[i]>b[j])
{
c[temp++]=a[i];
i++;
break;
}
if(a[i]<b[j])
{
c[temp++]=b[j];
j++;
break;
}
if(a[i]==a[j])
{
c[temp++]=b[j];
j++;
i++;
break;
}
复制代码
作者:
余尚勇
时间:
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