基础为技术之本_归并排序

Posted zangjiapei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础为技术之本_归并排序相关的知识,希望对你有一定的参考价值。

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

public static void MergeSort(int[] array,int start,int end)
        
            if (array == null || start > end)
                return;

            if(start < end)
            
                int mid = (start + end) / 2;
                MergeSort(array, start, mid);
                MergeSort(array, mid + 1, end);
                Merge(array, start, mid, end);
            
        

        static void Merge(int[] array,int start,int mid,int end)
        
            int[] temp = new int[end - start + 1];//中间数组

            int i = start;//左开头
            int j = mid + 1;//右开头

            int k = 0;
            while (i <= mid && j <= end)//把较小的数先移到新数组中
            
                if (array[i] <= array[j])
                
                    temp[k++] = array[i++];
                
                else
                
                    temp[k++] = array[j++];
                
            
            // 把左边剩余的数移入数组
            while (i <= mid)
            
                temp[k++] = array[i++];
            
            // 把右边边剩余的数移入数组
            while (j <= end)
            
                temp[k++] = array[j++];
            

            // 把新数组中的数覆盖nums数组
            for (int p = 0; p < temp.Length; p++)
            
                array[start + p] = temp[p];
            
        

 

以上是关于基础为技术之本_归并排序的主要内容,如果未能解决你的问题,请参考以下文章

基础算法| 归并排序

算法_归并排序

java七大排序——7_归并排序

基础算法| 归并排序

稳定排序nlogn之归并排序_一维,二维

归并排序算法