Chinaunix首页 | 论坛 | 博客
  • 博客访问: 340909
  • 博文数量: 54
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-30 17:37
文章分类

全部博文(54)

文章存档

2015年(35)

2014年(19)

我的朋友

分类: C/C++

2015-09-11 14:03:22

     有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入到A1中并且所有数字是排序的。
    这道题用的是归并排序的思想,不同的是我们需要从后往前复制数字,这样复杂度是O(M+N),M,N分别是A1,A2数组的长度,很简单的一道题,直接贴上代码:
    

点击(此处)折叠或打开

  1. #include <iostream>
  2. using namespace std;
  3. void merge(int a[],int len1,int b[],int len2)
  4. {
  5.     int i = len1+len2;
  6.     i--;
  7.     len1--;
  8.     len2--;

  9.     while(len1 >&len2 >0)
  10.     {
  11.        if (a[len1>b[len2])
  12.        {
  13.           a[i--] = a[len1--];
  14.        }
  15.        else
  16.        {
  17.           a[i--] = b[len2--];
  18.        }
  19.     }
  20.  
  21.     while (len1 >0)
  22.     {
  23.        a[i--] = a[len1--];
  24.     }

  25.     while (len2 >0)
  26.     {
  27.        a[i--] = b[len2--];
  28.     }
  29. }

阅读(1407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~