归并排序

归并排序,采用分治法。首先采用递归,把数组分成一小段有序,然后再把有序的数组一一合并。

首先看看,把有序的二个数组,合成一个的算法。


package day20180406;

public class GuibingDem {

    public static void main(String[] args) {
    
        int[] test1= {1,3,5};
        int[] test2= {-8,8,16,26,88};
        int[] c=new int[8];
        hebing(test1,test2,c);
        print(c);
    }
    

// 把二个有序的数组合并   
    static void hebing(int[] a,int[] b,int[] c)
    {
        int i=0,j=0;
        int k=0;
        while(i

结果

 -8 1 3 5 8 16 26 88

归并排序

package day20180410;

import java.util.ArrayList;

public class DuipaiDem {

    public static void main(String[] args) {
          int[] arry= {1,288,311,400,5,88,89,100};
          int[] b=new int[arry.length];
          System.out.println();
          display(arry);
      sort(arry,0,arry.length-1);
         display(arry);
     //    addSort(arry,b,0,arry.length/2,arry.length-1);
     //    display(b);
          
    }
    
    
 //归并排序
    static void sort(int[] arr,int left,int right)
    {
        int mid;
        int[] num=new int[arr.length];
        if(left==right)
        {
            return ;
        }else {
            mid=(left+right)/2;
            //左边归并排序
            sort(arr,left,mid);
            //右边归并排序
            sort(arr,mid+1,right);
            //合并有序的子数组。
            addSort(arr,num,left,mid,right);
            
        }
        for(int i=left; i

结果


 1 288 311 400 5 88 89 100
 1 5 88 89 100 288 311 400

相关文章
归并排序原理及Java实现
Java实现归并排序

大同小异,思路差不多。

你可能感兴趣的:(归并排序)