归并排序的思想、动态演示、C++、python实现,推荐参考归并排序详解 归并排序的思想:分而治之,这里有树的思想。
 归并排序的算法性能

 由于需要递归,需要一个大小为n的临时存储空间用以保存合并序列。所以空间复杂度为O(n)。快速排序也是递归。
 在归并排序中,相等的元素的顺序不会改变,所以它是稳定的算法。
java实现归并排序
    public static void mergesort(int[] arry, int low, int high){
        if(low<high){
            int mid=(low+high)/2;
            mergesort(arry,low,mid);
            mergesort(arry,mid+1,high);
            merge(arry,low,mid,high);//每次归并的核心数组
        }
    }
    public static void merge(int[] arry, int low, int mid, int high){
        int[] buffer=new int[high-low+1];
        int i=low;
        int j=mid+1;
        int k=0;
        while(i<=mid&&j<=high){
            if(arry[i]>=arry[j])
                buffer[k++]=arry[j++];
            else
                buffer[k++]=arry[i++];
        }
        while(i<=mid){
            buffer[k++]=arry[i++];
        }
        while(j<=high){
            buffer[k++]=arry[j++];
        }
        int m=0;
        while (low<=high){
            arry[low]=buffer[m];
            m++;
            low++;
        }
//        System.arraycopy(buffer, 0, arry, low, high - low + 1);
    }总结
- 归并排序思想是:分而治之,但是需要树帮助我们去理解。
                









