美文网首页
88. Merge Sorted Array(归并排序法的使用)

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

作者: Ching_Lee | 来源:发表于2018-02-18 18:36 被阅读0次
    //归并排序法的使用
    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];
            
        }
    }
    

    相关文章

      网友评论

          本文标题:88. Merge Sorted Array(归并排序法的使用)

          本文链接:https://www.haomeiwen.com/subject/pvybtftx.html