//归并排序法的使用
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] sortNums=new int[m+n];
int nums1_index=0,nums2_index=0,sort_index=0;
//如果n是0,就直接返回nums1
if(n==0)
return;
//如果m是0,直接返回nums2
if(m==0){
//注意,这里需要一个一个复制,需要改变所指向的内存的数据。
for(int i=0;i<nums2.length;i++)
nums1[i]=nums2[i];
return;
}
while(nums1_index<m&&nums2_index<n){
//如果nums1值小于nums2,把小的值放到sortNums中
if(nums1[nums1_index]<nums2[nums2_index]){
sortNums[sort_index++]=nums1[nums1_index];
nums1_index++;
}
else
{
sortNums[sort_index++]=nums2[nums2_index];
nums2_index++;
}
}
while(nums1_index<m){
sortNums[sort_index++]=nums1[nums1_index++];
}
while(nums2_index<n){
sortNums[sort_index++]=nums2[nums2_index++];
}
for(int i=0;i<sortNums.length;i++)
nums1[i]=sortNums[i];
}
}
网友评论