88. Merge Sorted Array(归并排序法的使用)

2018-02-18  本文已影响0人  Ching_Lee
//归并排序法的使用
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];
        
    }
}
上一篇 下一篇

猜你喜欢

热点阅读