java实现通过归并排序计算数组逆数对个数
来源:互联网 发布:彩票app源码下载 编辑:程序博客网 时间:2024/05/17 23:18
计算逆数对个数
public class Inv_numpair {private int count=0; //逆数对的数量public static int[] geneateArrays(int n){int arr[]=new int[n];for(int i=0;i<n;i++){arr[i]=new Random().nextInt(n)+1;}return arr;}public void mergesort(int[] arr,int n){__mergesort(arr,0,n-1);} public 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]) //若arr[mid]<arr[mid+1],则数组已经有序,if判断下减少了归并步骤 __merge(arr,l,mid,r);}//将arr[l,mid]和arr[mid+1,r]两个部分进行归并public 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]; //i-l:减去偏移量}int i=l,j=mid+1; //分别指向两个数组的开头for(int k=l;k<=r;k++){if(i>mid){ //若aux[]左半边的元素都访问完了,则将aux右半边剩余元素赋值回arr[]arr[k]=aux[j-l];j++;}else if(j>r){ //若aux[]右半边的元素都访问完了,则将aux左半边剩余元素赋值回arr[]arr[k]=aux[i-l];i++;}else if(aux[j-l]<aux[i-l]){ //在aux[]中比较后,将正确结果赋值回arr[]count=count+mid-i+1;arr[k]=aux[j-l];j++;}else{ //aux[i-l]<=aux[j-l]arr[k]=aux[i-l];i++;}}}public int count(){return count;}public static void main(String[] args) {int arr[] =MAIN.geneateArrays(12);for(int i=0;i<arr.length;i++){System.out.print(" "+arr[i]);}Inv_numpair in=new Inv_numpair();in.mergesort(arr,arr.length);System.out.println();System.out.println("逆数对的数量: "+in.count());}}跟归并排序相比就加了两行代码
结果如图:
阅读全文
1 0
- java实现通过归并排序计算数组逆数对个数
- 使用归并排序计算逆序对个数
- 归并排序--逆序数对的计算
- 归并排序 & 数组中的逆序对 【java实现】
- [笔记]利用归并排序计算逆序数的个数
- 使用归并排序求解数组逆序对个数
- 2299 求逆序数对 归并排序/树状数组
- 11.2 对数组归并排序
- 对数组进行归并排序
- 归并排序与逆序对的个数
- 归并排序求逆序对的个数
- 归并排序求逆序对个数
- 归并排序应用——数组中的逆序对 and 计算数组的小和
- java计算100!通过数组实现
- (应用排序算法编程7.2.2)POJ 2299 Ultra-QuickSort(使用归并排序来计算逆序对的个数)
- 归并排序Java实现
- Java实现归并排序
- Java实现归并排序
- 侧滑,日夜,第三方登录
- POJ 3042 Grazing on the Run (三维区间DP)【区间DP模板】
- 封装以后如何修改和得到属性
- cocos2dx-3.10 Cocos Studio 启动错误解决办法
- 生产树计数
- java实现通过归并排序计算数组逆数对个数
- python安装心得
- BannerDemo
- Android客户端之“微服私访”App的系统学习(四)使用ViewPager+Fragment实现Tab
- 学习akka之helloword
- 【NOI2017模拟6.3】子序列 矩阵乘法+DP
- Oracle11g安装之后,安装Plsql Developer登录下拉没有选项
- 简单描述QAbstractItemModel::dataChanged() 与 QAbstractItemModel::data() 的关系
- 运算符号