归并排序

package sort;

import sort.swap.QuickSort;

import java.util.Arrays;

/**
 * @author chenyi
 * @Description 归并排序
 * @date 2022/2/15 14:07
 */
public class MergeSort {

    public void solution(int[] arr, int start, int end){
        if(start>=end){
            return;
        }
        int m = (end+start)>>1;
        solution(arr,start,m);
        solution(arr,m+1,end);
        // 合并,合并的结果存于临时数组
        int[] arr2 = new int[end-start+1];
        int i=start,j=m+1,k=0;
        while (i<=m&&j<=end) {
            if(arr[i]<arr[j]) {
                arr2[k++] = arr[i];
                i++;
            }else {
                arr2[k++] = arr[j];
                j++;
            }
        }
        while (i<=m) {
            arr2[k++] = arr[i];
            i++;
        }
        while (j<=end) {
            arr2[k++] = arr[j];
            j++;
        }
        // 将合并的结果拷贝到原数组中
        for (int l = 0; l < k; l++) {
            arr[l+start] = arr2[l];
        }
        System.out.println(Arrays.toString(arr2));
    }

    public static void main(String[] args) {
        int[] arr = {8,4,5,7,1,3,6,2};
        new MergeSort().solution(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容