zoukankan      html  css  js  c++  java
  • 剑指Offer 51. 数组中的逆序对(归并排序)

    class Solution {
        public int reversePairs(int[] nums) {
            int left = 0;
            int right = nums.length-1;
            int cnt=0;
            int[] tmp = new int[nums.length];
            Arrays.fill(tmp,0);
            cnt=MergeSort(left,right,nums,tmp);
            for(int i=0;i<=right;i++){
                System.out.print(nums[i]);   
            }
            return cnt;
        }
    
        public int MergeSort(int left,int right,int[]nums,int[]tmp){
            int cnt=0;
            if(left<right){
    
                int mid = left + (right-left)/2;
                cnt+=MergeSort(left,mid,nums,tmp);
                cnt+=MergeSort(mid+1,right,nums,tmp);
                cnt+= merge(left,mid,right,nums,tmp);
            }
            return cnt;
        }
    
        public int merge(int left,int mid,int right,int[]nums,int[] tmp){
            for(int i=left;i<=right;i++){
                tmp[i] = nums[i];
            }
            int i=left;
            int j=mid+1;
            int count=0;
            int k=left;
            while(i<=mid&&j<=right){
                if(tmp[i]<=tmp[j]){
                    nums[k++] = tmp[i];
                    i++;
                }
                else{
                    nums[k++] = tmp[j];
                    j++;count+=(mid-i+1);
                }
            }
            while(j<=right){
                nums[k++] = tmp[j];
                j++;
            }
            while(i<=mid){
                nums[k++] = tmp[i];
                i++;
            }
            return count;
        }
    
    }
  • 相关阅读:
    CAS配置记录
    线程同步机制
    线程
    异常
    List集合
    数据结构
    泛型+通配符高级使用--受限泛型
    Collection集合+迭代器+foreach循环
    easyui获取日期datebox中的值
    EL表达式与三目运算符
  • 原文地址:https://www.cnblogs.com/dloooooo/p/13831697.html
Copyright © 2011-2022 走看看