16. 有序数组合并

有2个长度为nm有序的整型数组arr1arr2,请将他们合并为一个n+m有序数组。

注意:数组arr1包含足够的空间存放下n+m个元素,请直接将结果合并到数组arr1中。

提示:不要使用任何辅助数组,辅助空间。

样例:

n=3
m=2
arr1: [1,4,8,x,x]
arr2: [-1,5]
算法运行后arr1应该为[-1,1,4,5,8]

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = {1,4,8,0,0};
            int[] arr2 = { -1,5};
            MergeTwoArray(arr1, arr2, 3, 2);
            foreach (int item in arr1)
            {
                Console.WriteLine(item);
            }
        }

        static void MergeTwoArray(int[] intArr1, int[] intArr2, int m, int n)
        {
            int a = m - 1;
            int b = n - 1;
            for (int i = m + n -1; i >=0; i--)
            {
                if ((a>=0&&intArr1[a]>intArr2[b])||b<0)
                {
                    intArr1[i] = intArr1[a];
                    a--;
                }
                else
                {
                    intArr1[i] = intArr2[b];
                    b--;
                }
            }
        }
    }
}
View Code

 

posted @ 2014-02-05 16:48  Ligeance  阅读(262)  评论(0编辑  收藏  举报