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 解压文件
    linux 文件夹操作
    adb 安装apk报INSTALL_FAILED_NO_MATCHING_ABIS
    Android Tab类型主界面 Fragment+TabPageIndicator+ViewPager
    Android 图表
    Android Manifest文件
    BroadcastReceiver介绍
    Android dimen
    Android Dialog
    Android 获取加速传感器的值,并去除杂音
  • 原文地址:https://www.cnblogs.com/a294098789/p/5349952.html
Copyright © 2011-2022 走看看