• 4.3_8种常用排序算法4(归并排序)


    【归并排序】

    【归并排序实例】

    package com.sort.demo4;
    
    import java.util.Arrays;
    
    /**
     * 归并排序
     */
    public class MergeSort {
    
        public static void main(String[] args) {
            int[] arr = new int[]{1,4,5,7,3,9,8,0,2,6};
            System.out.println(Arrays.toString(arr));
            mergeSort(arr,0,arr.length-1);
            System.out.println(Arrays.toString(arr));
        }
    
        public static void  mergeSort(int[] arr,int low, int high) {
            int middle = (high+low)/2;
            if(low<high) {
                //处理左边
                mergeSort(arr, low, middle);
                //处理右边
                mergeSort(arr, middle + 1, high);
                //归并
                merge(arr, low, middle, high);
            }
        }
    
        public static void merge(int[] arr,int low,int middle, int high) {
            //用于存储归并后的临时数组
            int[] temp = new int[high-low+1];
            //记录第一个数组中需要遍历的下标
            int i= low;
            //记录第二个数组中需要遍历的下标
            int j =middle+1;
            //用于记录在临时数组中存放的下边
            int index = 0;
            //遍历两个数组去除小的数字,放入临时数组中
            while (i<=middle && j<=high){
                //第一个数组的数据更小
                if(arr[i]<=arr[j]){
                    //把小的数据放入临时数组中
                    temp[index]=arr[i];
                    //让下标向后移一位
                    i++;
                }else {
                    temp[index] = arr[j];
                    j++;
                }
                index++;
            }
            //处理多余的数据
            while (j<=high){
                temp[index] = arr[j];
                j++;
                index++;
            }
            while (i<=middle){
                temp[index]=arr[i];
                i++;
                index++;
            }
            //把临时数组中的数据重新存入原数组
            for (int k=0;k<temp.length;k++){
                arr[k+low] = temp[k];
            }
        }
    
    
    }
  • 相关阅读:
    jquery笔记
    css选择器
    Linq 巧用 Max,Sum
    Linq Aggregate
    Linq 对象的比较 Contains,Max
    Linq SelectMany 交叉连接
    JQ 标签相关知识
    C# HttpClient设置cookies的两种办法 (转发)
    使用 HttpClient 请求 Web Api
    MySQL 避免重复数据的批量插入与批量更新
  • 原文地址:https://www.cnblogs.com/HigginCui/p/10601571.html
Copyright © 2020-2023  润新知