采用归并排序思想解决逆序对数问题
来源:互联网 发布:提高英语水平的软件 编辑:程序博客网 时间:2024/06/06 01:44
//归并排序解逆序对数问题public class MergeSort {static int count=0;public static void mergeSort(int[] arr,int p,int r){if (p<r){int q=(p+r)/2;mergeSort(arr,p,q);mergeSort(arr,q+1,r);merge(arr,p,q,r);}}public static void merge(int[] arr,int p,int q,int r){int n1=q-p+1;int n2=r-q;int[] arrL=new int[n1+1];int[] arrR=new int[n2+1];for (int i=0;i<n1 ;i++ ){arrL[i]=arr[p+i];}for (int j=0;j<n2 ;j++ ){arrR[j]=arr[q+j+1];}arrL[n1]=65535;arrR[n2]=65535;int x=0,y=0;for (int k=p;k<=r ;k++ ){if (arrL[x]<=arrR[y]){arr[k]=arrL[x];x++;}else{arr[k]=arrR[y];count=count+n1-x;//若arrL[x]>arrR[y],arrL中大于等于arrL[x]的数都比arrR[y]大,都与arrR[y]是逆序对for (int m=x;m<n1 ;m++ ){System.out.println("["+arrL[m]+","+arrR[y]+"]");}y++;}}}public static void main(String[] args) {int[] arr={2,3,8,6,1};mergeSort(arr,0,arr.length-1);System.out.println("count:"+count);}}[6,1][2,1][3,1][8,1][8,6]count:5
1 0
- 采用归并排序思想解决逆序对数问题
- 归并排序-逆序对数
- 归并排序求逆序对数)
- 归并排序&求逆序对数
- 归并排序求逆序对数
- 归并排序求逆序对数
- 归并排序及逆序对数
- 归并排序之逆序对数
- 归并排序求逆序对数
- 逆序对数(归并排序)
- 【java】归并排序 逆序对数
- ACM:归并排序,以及利用归并排序思想求解逆序对数!
- 边归并排序,边统计逆序对数
- hash一下 + 归并排序计算逆序对数
- 归并排序 and 逆序对数(分治)
- 归并排序同时计算逆序对数
- 求逆序对数(利用归并排序)
- POJ 2299 归并排序 求逆序对数
- liunx 设置ssh 自动登录
- 跳台阶
- Redis的安装和基本使用笔记
- Ubuntu16.10下安装Hadoophadoop-2.8.0(单机模式)
- 二分查找以及位图法
- 采用归并排序思想解决逆序对数问题
- Kitti数据集进行目标检测批处理和shell的入门
- 对象包装器和自动装箱
- JavaWeb前端知识-JavaScript基础
- react native codepush热更新解决成功更新
- Android 利用多线程从网络下载文件
- Hdu-1016-Prime Ring Problem [dfs]
- Macromedia Dreamweaver 8—页面三剑客之一与我的故事
- boolan——c++学习笔记之设计模式一