编辑代码

class Main {
    private static int count = 0;
    public static void main(String[] args) {
        int[] arr = new int[]{2,4,3,1,5,6};
        mergeSort(arr,0,arr.length);
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
        System.out.println(count);
    }

    public static boolean mergeSort(int[] arr,int arrStart,int arrEnd)
    {
        int len = arrEnd - arrStart;
        if (len < 0)
            return false;
        if (len == 1 || len == 0)
            return true;
        int mid = ((arrEnd - arrStart) >> 1) + arrStart;
        mergeSort(arr,arrStart,mid);
        mergeSort(arr,mid,arrEnd);

        return merge(arr,arrStart,mid,arrEnd);

    }

    public static boolean merge(int[] arr,int arrStart,int mid,int arrEnd)
    {
        int[] tempArr = new int[arrEnd - arrStart];
        int index = 0;
        int i = arrStart;
        int j = mid;
        while (i < mid && j < arrEnd)
        {
            if (arr[i] <= arr[j])
                tempArr[index++] = arr[i++];
            else
            {
                tempArr[index++] = arr[j++];
                count += (mid - i);
            }
        }
        while(i < mid)
            tempArr[index++] = arr[i++];
        while(j < arrEnd)
            tempArr[index++] = arr[j++];

        for(int k = arrStart;k < arrEnd;++k)
            arr[k] = tempArr[k - arrStart];
        tempArr = null;
        return true;
    }

}