归并排序之数组的逆序对
来源:互联网 发布:中国人工智能机器人 编辑:程序博客网 时间:2024/04/29 17:41
题意:求出给定的数组中的逆序对的数量,可使用归并排序求解。
import java.util.* ;public class Solution { public int InversePairs(int [] array) { if(array.length == 0) { return 0 ; } return mergeInverse(0, array.length - 1, array, 0) ; } public int mergeInverse(int first, int last, int [] array, int iCount) { if(first < last) { int mid = first + (last - first) / 2 ; int iCount1 = mergeInverse(first, mid, array, iCount) ; int iCount2 = mergeInverse(mid+1, last, array, iCount) ; return mergeArray(first, mid, last, array, iCount1 + iCount2) ; } return iCount ; } public int mergeArray(int first, int mid, int last, int[] array, int iCount) { List<Integer> tmp = new ArrayList<Integer>() ; int i = first, m = mid ; int j = mid + 1, n = last ; while(i <= m && j <= n) { if(array[i] <= array[j]) { tmp.add(array[i ++]) ; } else { for(int k = i; k <= m; k ++) { if(array[k] > array[j]) { iCount ++ ; } } tmp.add(array[j ++]) ; } } while(i <= m) { tmp.add(array[i ++]) ; } while(j <= n) { tmp.add(array[j ++]) ; } for(i = 0; i < tmp.size(); i ++) { array[first + i] = tmp.get(i) ; } return iCount ; }}
0 0
- 归并排序之数组的逆序对
- 归并排序之逆序对
- 逆序对之树形数组与归并排序
- 归并排序思想应用之----求数组中的逆序对
- 数组中的逆序对:归并排序的变形。
- 逆序对的两种算法【树状数组 / 归并排序】
- 剑指offer之面试题36:数组中的逆序对-归并排序的应用
- 归并排序&&数组中逆序对问题
- 归并排序求数组逆序对
- 数组中的逆序对(归并排序)
- 归并排序求数组中的逆序对
- 修改归并排序求数组逆序对
- 归并排序-数组中的逆序对
- 数组中的逆序对(归并排序)
- 归并排序/逆序数组对问题
- 逆序对解决方法之归并排序
- 逆序对 归并排序
- 归并排序 & 逆序对
- ubuntu update gcc g++
- java中的equals和==
- Javamail发送邮件的简单实例
- iOS项目开发实战——使用三种方式实现页面跳转与参数传递(一)
- 开篇
- 归并排序之数组的逆序对
- c primer plus 14章答案
- javascript 严格模式
- 求一个3*3矩阵对角线元素之和
- C++常见面试
- 不伤眼睛的文字背景色
- Fiddler抓取http请求(web/手机/移动端)
- C++ int类型转换string类型
- java Map,Set,List的区别