有2个长度为n和m的有序的整型数组arr1和arr2,请将他们合并为一个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--; } } } } }