小白眼里的归并排序

1.归并排序的基本思想

1.归并排序依然采取的是分治算法,首先把数组拆分成有限个有序小数组(分)

2.相邻两个小数组之间进行比较合并成有序大数组(治)

 

2.图解归并排序

 

 

3.归并排序的一个小例子(如何将两个有序数组合并成一个数组)

public static int [] merge(){
        //首先准备两个需要合并的有序数组
        int [] arr1 = {1,2,9};
        int [] arr2 = {4,6};
        //开辟一个临时数组,长度等于相比较两数组长度之和
        int [] temp = new int[arr1.length+arr2.length];

        //三个指针,用于指向初始三个数组起始位置
        int left,right,t;
        left=right=t=0;
        //进行比较后,组成新的有序数组,并赋值到temp中
        while(left<arr1.length && right<arr2.length){
            if(arr1[left]<arr2[right]){
                temp[t++] = arr1[left++];
            }else{
                temp[t++] = arr2[right++];
            }
        }
        
        //将arr1剩余元素填充进temp中
        while(left<arr1.length){
            temp[t++] = arr1[left++];
        }
        //将arr2剩余元素填充进temp中
        while(right<arr2.length){
            temp[t++] = arr1[right++];
        }
        
        return temp;
    }

 

posted @ 2018-04-12 22:54  Allen·Zhang  阅读(72)  评论(0)    收藏  举报