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);
            }
            
        }
    }

  • 相关阅读:
    树的一些操作
    线程池的概念
    线程池
    BLOB字段来保存fastreport的报表模板
    D7调用XE2 中间层注意事项
    xe2 datasnap中间层+d7客户端调用
    关于延迟时间的一点智慧

    插件
    phpstorm clone 码云项目到本地 Version Control 不显示
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11184391.html
Copyright © 2011-2022 走看看