Chinaunix首页 | 论坛 | 博客
  • 博客访问: 360520
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2015-03-04 12:40:33

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.

  1. void merge(int A[], int m, int B[], int n) {
  2.     int i=m-1;
  3.     int j=n-1;
  4.     int k=m+n-1;
  5.     while(k>=0)
  6.     {
  7.         if(i==-1)
  8.         {
  9.             A[k--]=B[j--];
  10.         }
  11.         else if(j==-1)
  12.         {
  13.             A[k--]=A[i--];
  14.         }
  15.         else
  16.         {
  17.             if(A[i]>B[j])
  18.                 A[k--]=A[i--];
  19.             else
  20.                 A[k--]=B[j--];
  21.         }
  22.     }
  23. }
  24. void merge(int A[], int m, int B[], int n)
  25. {//递归版本
  26.     int k=m+n-1;
        if(k>=0)
        {
            if(m==0)
                A[k]=B[--n];
            else if(n==0)
                A[k]=A[--m];
            else 
            {
                if(A[m-1]>B[n-1])
                    A[k]=A[--m];
                else
                    A[k]=B[--n];
            }
        merge(A,m,B,n);
        }
    }


阅读(1642) | 评论(0) | 转发(0) |
0

上一篇:Pow(x, n)

下一篇:Merge Two Sorted Lists

给主人留下些什么吧!~~