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

    class Solution {
        public int[] sortArray(int[] nums) {
            int n=nums.length;
            mergeSort(nums,0,n-1);
            return nums;
        }
         //进行归并操作,对于两个数组分别为arr[l,mid]和arr[mid+1,r]进行归并。i,j分别指向aux对应于左边和右边的数组,而k指向要归并的数组,即原数组。
        public static void merge(int[] arr,int l,int mid,int r){
            int[] aux=new int[r-l+1];
            for(int i=l;i<=r;i++)
            {
                aux[i-l]=arr[i];
            }
            int i=l,j=mid+1;
            for(int k=l;k<=r;k++)
            {
                if(i>mid)
                {
                    arr[k]=aux[j-l];
                    j++;
                }
                else if(j>r)
                {
                    arr[k]=aux[i-l];
                    i++;
                }
                else  if(aux[i-l]<aux[j-l])
                {
                    arr[k]=aux[i-l];
                    i++;
                }
                else {
                    arr[k]=aux[j-l];
                    j++;
                }
            }
            
        }
        //进行划分操作,递归地将数组分开成两半,一直分到只剩一个,就return;,然后对于递归的数组每个层次都进行一个归并,最底层两个数组分别只有一个元素
        public static void mergeSort(int[] arr,int l,int r)
        {
            if(l>=r)
            {
                return;
            }
            int mid=(l+r)/2;
            mergeSort(arr,l,mid);
            mergeSort(arr,mid+1,r);
            if(arr[mid]>arr[mid+1])
            {
                merge(arr,l,mid,r);
            }
            
        }
    }

  • 相关阅读:
    Windows phone 应用开发系列教程(更新中)
    ios实例开发精品文章推荐(8.14)
    Android开发环境——调试器 DDMS相关内容汇总
    docker 发布应用时添加 git revision
    docker环境下数据库的备份(postgresql, mysql)
    golang web 方案
    golang 1.12 自动补全
    区块链简介
    天空的另一半
    Ecto中的changeset,schema,struct,map
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11184391.html
Copyright © 2011-2022 走看看