二路归并排序的Java实现
来源:互联网 发布:淘宝企业店注册 编辑:程序博客网 时间:2024/06/06 05:54
1、归并介绍
归并排序是多次将两个或者两个以上的有序表合并为一个表。
public class MegerSort {private int[] pArrayofInts;public MegerSort(int[] pArrayofInts) {this.pArrayofInts=pArrayofInts;}public void doSort() {for(int pLength=1;pLength<pArrayofInts.length;pLength*=2)megerPass(pLength);}public void printArray(){for(int pIndex=0;pIndex<pArrayofInts.length;pIndex++){System.out.print(pArrayofInts[pIndex]+"、");}}private void megerPass(int pLength){int i=0;for(;i+2*pLength<pArrayofInts.length;i=i+2*pLength)//归并两个相邻的长度为length的子表meger(i, i+pLength-1, i+2*pLength-1);if(i+pLength-1<pArrayofInts.length){//余下两个子表,后者长度小于lengthmeger(i, i+pLength-1, pArrayofInts.length-1);}}
//如下是对2个表进行合并 pArrayofInts[low...mid]为第一段,[mid+1...high]为第二段
private void meger(int pLow,int pMid,int pHigh){int[] pTemp=new int[pHigh-pLow+1];int k=0,i=pLow,j=pMid+1;for(;k<pTemp.length&&i<=pMid&&j<=pHigh;k++){//第一段和第二段均为扫面完时循环pTemp[k]=(pArrayofInts[i]>pArrayofInts[j])?(pArrayofInts[j++]):(pArrayofInts[i++]);}for(;i<=pMid&&k<pTemp.length;k++,i++ ){//将第一段剩余的记录放入临时数组pTemp[k]=pArrayofInts[i];}for(;j<=pHigh&&k<pTemp.length;k++,j++){//将第二段剩余的记录放入临时的数组pTemp[k]=pArrayofInts[j];}for(int pTempIndex=0,pArrayIndex=pLow;pTempIndex<pTemp.length&&pArrayIndex<=pHigh;pTempIndex++,pArrayIndex++){//将临时数组赋值回pArrayofInts中pArrayofInts[pArrayIndex]=pTemp[pTempIndex];}}}
public class Main {public static void main(String[] args) {int[] pArrayofInts = { 3, 5, 6, 22, 1, 0, 4 ,87,902,111};RadixSort pRadixSort = new RadixSort(pArrayofInts,1000);System.out.println("排序前:");pRadixSort.printArray();pRadixSort.doSort();System.out.println("排序后:");pRadixSort.printArray();}}
0 0
- 二路归并排序的Java实现
- java 实现二路归并排序
- 数据结构 二路归并排序的实现
- 插入排序算法&二路归并排序算法java实现
- 二路归并排序实现
- 二路归并非递归排序Java实现
- java实现的归并排序
- 归并排序的java实现
- 归并排序的Java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- Java实现的归并排序
- Java归并排序的实现
- 归并排序的Java实现
- 两种归并排序算法的实现:二路归并排序和基本归并排序(虚拟消除递归的二路归并排序)
- 排序算法(二)_希尔排序、快速排序、归并排序的Java实现
- 关于ListView的报错
- 【 随笔 】 D3 难吗?
- linux expect中的timeout设定
- nginx 配置端口转发
- 机房合作——职责链+策略模式
- 二路归并排序的Java实现
- jquery 动态生成html5列表项以及header,footer的固定,居中排列
- 百姓网笔试题目
- Max Sum—DP求连续子序列最大的和
- centos 安装 redis3.0.0 集群
- IOS开发反射和动态调用总结
- Storm实时日志分析实战
- 杭电ACM 2104: hide handkerchief
- [开源]实现顺滑过渡动画的LoadingView