(88)-(Merge Sorted Array )-(将两个有序的数组合并成同一个数组nums1)-(还是归并排序的最后一步)
//You may assume that nums1 has enough space
//(size that is greater or equal to m + n) to hold additional elements from nums2.
//The number of elements initialized in nums1 and nums2 are m and n respectively.
public class Solution
{
public void merge(int[] nums1, int m, int[] nums2, int n)
{
int i=0;
int j=0;
int k=0;
//数组1为空,把数组2直接放到数组1上面去,不做任何修改
if(nums1==null||nums1.length==0)
{
for(j=0;j<n;j++)
{
nums1[j]=nums2[j];
}
return ;
}
//数组2为空,不做任何处理
if(nums2==null||nums2.length==0)
{
return ;
}
i=0;
j=0;
k=0;
int []ans=new int[m+n];
while(i<m &&j<n)
{
if(nums1[i]<nums2[j])
{
ans[k]=nums1[i];
i++;
k++;
}
else
{
ans[k]=nums2[j];
j++;
k++;
}
}
while(i<m)
{
ans[k]=nums1[i];
i++;
k++;
}
while(j<n)
{
ans[k]=nums2[j];
j++;
k++;
}
for(k=0;k<m+n;k++)
{
nums1[k]=ans[k];
}
return ;
}
}