LeetCode Online Judge 题目C# 练习 - Merge Sorted Array

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 to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.

 1         public static void MergeSortedArray(int[] A, int m, int[] B, int n)

 2         {

 3             if (m == 0)

 4             {

 5                 A = B;

 6                 return;

 7             }

 8             if (n == 0)

 9                 return;

10 

11             //move all the element in A[] to the end

12             for (int i = 0; i < m; i++)

13             {

14                 A[i + m] = A[i];

15             }

16 

17             //Merge

18             int p = m, q = 0, k = 0;

19             while (p < A.Length || q < B.Length)

20             {

21                 if (p == A.Length)

22                 {

23                     A[k++] = B[q++];

24                     continue;

25                 }

26                 if (q == B.Length)

27                 {

28                     A[k++] = A[p++];

29                     continue;

30                 }

31 

32                 if (A[p] <= B[q])

33                 {

34                     A[k++] = A[p++];

35                     continue;

36                 }

37                 else

38                 {

39                     A[k++] = B[q++];

40                     continue;

41                 }

42             }

43         }

代码分析:

  O(n), 就是把A[]的数字全部移到尾部,再跟B[] merge。应该也可以直接从后往前merge,大的先走!

你可能感兴趣的:(LeetCode)