Java八大排序——归并排序

        1.什么是归并排序

        归并排序是一种基于分治思想的排序算法,它将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将这些有序的子序列合并成一个有序的序列。归并排序的时间复杂度为O(nlogn),是一种稳定的排序算法。除了排序外,归并算法还可以用于求逆序对等问题。

        2.归并排序的主要思想

        先拆分后合并,在合并的过程中借助临时空间进行排序。

        拆分:在中间位置分成左右两部分,继续拆分,直到拆分成一个一个停止。

        1.定义左指针left,右指针right和中间指针mid=(left+ringht)/2 进行拆分,直到拆分成一个一个停止。

Java八大排序——归并排序_第1张图片

        2.合并并排序

 Java八大排序——归并排序_第2张图片

3.代码实现

 public static void main(String[] args) {
        int[] arr = new int[]{2, 36, 78, 79, 76, 999, 890, 8, 3};
        split(arr,0, arr.length-1);//归并排序
        System.out.println(Arrays.toString(arr));
    }

//归并排序
    //拆分
    public static void split(int[] arr,int left,int right) {
        if(left==right){
            return;
        }
        int mid=(left+right)/2;
        //拆分左边
        split(arr, left, mid);
        //拆分右边
        split(arr, mid+1, right);
        merge(arr,left,mid,right);
    }
    //合并
    public static void merge(int[] arr,int left,int mid,int right){
        int s1=left;
        int s2=mid+1;
        int[] temp=new int[right-left+1];
        int index=0;//临时数组的下标
        while (s1<=mid&&s2<=right){
            if(arr[s1]

 

你可能感兴趣的:(排序算法,算法,数据结构)