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

    基本思想

    归并排序是建立在归并操作上的一种有效的排序算法。

    该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

    将一个数组分为越来越小的子列表,每个子列表单独进行排序,然后合并形成更大的有序列表。

    通过归并子列表元素来合并子列表就是归并排序(Merge Sort)

    代码实现

    package com.csdhsm.sort;
    
    public class MergeSort {
        
        public void sort(int[] arr,int low,int high){
            
            int mid = (low + high)/2;
            if(low < high){
                
                sort(arr,low,mid);
                sort(arr,mid+1,high);
                mergeSort(arr,low,mid,high);
            }
        }
        
        private void mergeSort(int[] arr,int low,int mid,int high){
            
            /**
             * 用于存放归并好的数组 
             */
            int[] copyArr = new int[high - low + 1];
            
            int i = low;
            int j = mid + 1;
            int k = 0;
            
            /**
             * 比较两个有序序列
             */
            while(i<=mid&&j<=high){
                
                if(arr[i] <= arr[j]){
                    
                    copyArr[k] = arr[i];
                    i++;
                }else{
                    
                    copyArr[k] = arr[j];
                    j++;
                }
                
                k++;
            }
            
            /**
             * 下面两个循环只会执行一个
             */
            while(i<=mid){
                
                copyArr[k] = arr[i];
                i++;
            }
            
            while(j<=high){
                
                copyArr[k] = arr[j];
                j++;
            }
            
            for(i=0;i<=k;i++){
                
                arr[low+i] = copyArr[i];
            }
        }
    }

    效率分析

    稳定

    空间复杂度:O(n)

    时间复杂度:O(nlog2n)

    最坏情况:O(nlog2n)

    最好情况:O(nlog2n)

  • 相关阅读:
    Linux系统管理10-----进程和计划任务管理
    07作业进程和任务管理
    Linux系统管理09-----引导过程与服务过程
    网站部署流程
    Docker 安装与使用
    基于NFS共享实现kvm虚拟主机
    GlusterFS 部署
    rsync 远程同步服务部署
    Zabbix 通过 JMX 监控 tomcat
    Zabbix 简单错误 解决方法
  • 原文地址:https://www.cnblogs.com/a294098789/p/5349952.html
Copyright © 2011-2022 走看看