博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个有序数组合并
阅读量:6815 次
发布时间:2019-06-26

本文共 828 字,大约阅读时间需要 2 分钟。

源自剑指offer中的思考题,有序数组A、B,A有足够空间容纳B,将A,B按顺序排列。

思路:

也是用两个指针从尾部开始进行依次比较,较大的放在新数组的后边,然后指针依次转移。

1. la,lb分别指向A和B的尾部,index指向融合数组的尾部;

2.然后比较,大的放在index中,index向前移动一位,然后大的la或者lb向前移动一位;

源代码如下:

#include<iostream>

using namespace std;

//两个有序数组进行排序,A有足够的空间容纳B,把和A融入到一起

void MergeArr(int a[], int b[], int la, int lb)//输入A和B的数组和两个长度

{
  if (la <= 0 || lb <= 0)
  return;

  int index=la+lb-1;

  int ida = la - 1;
  int idb = lb - 1;
  while (index >= 0)
  {
    if (a[ida] > b[idb]||idb<0) //注意边界条件,当一个数组中没有元素时,也要移动
      a[index--] = a[ida--];
    else if (a[ida]<=b[idb]||ida<0)
      a[index--] = b[idb--];
  }
}

int main()

{

  int a[10] = { 3, 5, 7, 10, 15 };

  int b[] = { 4, 8, 16 };

  MergeArr(a, b, 5, 3);

  for (int i = 0; i < 3 + 5; i++)

  {
    cout << a[i] << endl;
  }
  return 0;
}

转载于:https://www.cnblogs.com/zhuruibi/p/8763531.html

你可能感兴趣的文章
Leetcode#19Remove Nth Node From End of List
查看>>
什么是软件测试
查看>>
数据库中nchar,nvarchar,char,varchar的区别
查看>>
利用php soap实现web service (二)
查看>>
浅谈PHP弱类型安全
查看>>
linux下tomcat开机自启动
查看>>
使用go语言的list实现一个简单的LRU缓存
查看>>
rdma centos 7.3安装
查看>>
CloudStack中注册vsphere模版提示Connection Refused的解决方法
查看>>
我的友情链接
查看>>
更改WIIN7下C盘根目录下的写入权限
查看>>
python符号打印,bpython ,脚本tab自动补全
查看>>
python生成随机验证码
查看>>
续上篇LVS脚本
查看>>
jenkins安装
查看>>
RPMBUILD
查看>>
HDC与CDC
查看>>
MySQL常用函数(转)
查看>>
VC编程之标题栏和菜单
查看>>
vs 2008下安装detours3.0
查看>>