zoukankan      html  css  js  c++  java
  • 七大排序_归并排序

    归并排序:

               时间复杂度:

       空间复杂度:O(log2^n)

      原理:采用分而治之的思想

    过程图:

                

    package com.Grammer.归并排序;
    
    import java.awt.print.PrinterAbortException;
    import java.util.Arrays;
    
    public class MergeSort02 {
        public static void main(String[] args) {
            int len=10;
            int[] arr=new int[len];
            for (int i = 0; i < len - 1; i++) {
                arr[i]= (int) (Math.random()*100);
            }
            System.out.println("原始的数组"+ Arrays.toString(arr));
            //进行排序的操作
            sort(arr);
            System.out.println("完成的数组"+ Arrays.toString(arr));
        }
        private static void sort(int[] arr){
            if(arr.length==0||arr.length==1){
                return;
            }
            //创建 临时数组
            int[] temp=new int[arr.length];
            sort(arr,0,arr.length-1,temp);
        }
        private static void sort(int[] arr,int left,int right,int[] temp){
            if(left<right){
                int mid=(left+right)/2;
                sort(arr,left,mid,temp);
                sort(arr,mid+1,right,temp);
                merge(arr,left,mid,right,temp);
            }
        }
        private static void merge(int[] arr,int left,int mid,int right,int[] temp){
            int i=left;
            int j=mid+1;
            int t=0;
            while (i<=mid&&j<=right){
                if(arr[i]<arr[j]){
                    temp[t++]=arr[i++];
                }else{
                    temp[t++]=arr[j++];
                }
            }
            while(i<=mid){
                temp[t++]=arr[i++];
            }
            while (j<=right){
                temp[t++]=arr[j++];
    
            }
            t=0;
            while(left<=right){
                arr[left++]=temp[t++];
            }
        }
    }
    

      

      

  • 相关阅读:
    模块和包——Python
    异常——Python
    单例——Python
    类属性和类方法——Python
    继承和多态——Python
    私有属性和私有方法——Python
    面向对象封装案例——Python
    面相对象基础语法——Python
    类、接口作为成员变量类型——Java
    内部类的概念和分类——Java
  • 原文地址:https://www.cnblogs.com/666boyun/p/14831267.html
Copyright © 2011-2022 走看看