Java 求整型数组的逆序数
来源:互联网 发布:淘宝店铺简介怎么写? 编辑:程序博客网 时间:2024/05/01 09:51
如{7,5,6,4}的逆序数为5,可以使用归并排序来解决。
但是两个数组是从后向前进行比较,如果第一个数组的数字大于第二个数组当前的数字,就将第二个数组当前的数字位置数量就是对于数组1中当前数字的逆序数。
public class Main {public static void main(String[] args) throws Exception {int[] c = {7,5,6,4};System.out.println(findReverseCount(c));}public static int findReverseCount(int[] input) {if(input == null || input.length == 0){return 0;}int low = 0;int high = input.length-1;return findReverseCountHelper(input, low, high);}public static int findReverseCountHelper(int[] input, int low, int high){if(low == high){return 0;}int mid = (low+high)/2;int left = findReverseCountHelper(input, low, mid);int right = findReverseCountHelper(input, mid+1, high);int count = merge(input, mid, low, high);return left+right+count;}public static int merge(int[] input, int mid, int low, int high){int[] temp = new int[input.length+1];for(int i = low;i<=high;i++){temp[i] = input[i];}int leftEnd = mid;int rightEnd = high;int index = high;int count = 0;while(leftEnd>=low && rightEnd>=mid+1){if(temp[leftEnd]>temp[rightEnd]){count = count+rightEnd-mid;input[index] = temp[leftEnd];leftEnd--;}else{input[index] = temp[rightEnd];rightEnd--;}index--;}while(leftEnd>=low){input[index] = temp[leftEnd];leftEnd--;index--;}while(rightEnd>=mid+1){input[index] = temp[rightEnd];rightEnd--;index--;}return count++;}}
0 0
- Java 求整型数组的逆序数
- 求数组的逆序数
- 求数组的逆序数
- 树状数组求逆序数的模板
- java实现求排列的逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组 求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- 树状数组 求逆序数
- 树状数组求逆序数
- 树状数组求逆序数
- java利用poi添加多张图片到word
- 通话记录不现实位置信息
- Struts2-ResultType-3-动态结果集(dynamic_Results)
- python读conf配置文件--ConfigParser
- Head First SQL 第六章
- Java 求整型数组的逆序数
- POJ 1083 Moving Tables
- ConcurrentHashMap解析
- C# NPOI Excel固定模板写入数据
- 关于开源的XML Parser expat的介绍和使用心得
- Python到底能干什么
- Java经典算法(一)
- C++问题,对象包含与成员函数不兼容的类型限定符
- mysql快速复制数据库