归并排序
2016-08-15 16:17
316 查看
class MergeSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] array = new int[]{7,3,43,5,65,7,8,98,90,5,345,35,34}; int[] tmp = new int[array.length]; mergeSort(array, tmp, 0, array.length-1 ); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void merge(int[] arry, int[] tmp, int begin, int stop){ if(begin >= stop) return; int mid = (begin+stop)/2; int i = begin; int j = mid+1; int s = 0; while(i <= mid && j <= stop){ if(i <= mid && arry[i] <= arry[j] ){ tmp[s++] = arry[i++]; } if(i <= mid && arry[i] >= arry[j] ){ tmp[s++] = arry[j++]; } } while(i <= mid){ tmp[s++] = arry[i++]; } while(j <= stop){ tmp[s++] = arry[j++]; } for (int k = 0; k <= stop - begin; k++) { arry[begin + k] = tmp[k]; } } public static void mergeSort(int[] array,int[] tmp, int begin, int stop ){ int mid = (begin +stop ) / 2; if(begin >= stop) return; mergeSort(array, tmp, begin, mid); //递归将左侧排序 mergeSort(array, tmp, mid+1, stop); //递归将右侧排序 merge(array, tmp, begin, stop); //合并begin到stop区间的数据 } }
相关文章推荐
- 找连续数 HDU5247
- HDU 1561(树形dp)
- 【背包/母函数】HDU2069-Coin Change
- js 窗口操作
- discuz 微社区 您请求的XXXX无法访问 接口错误(ERR02)
- jstl标签的用法(一)
- POJ 1149-PIGS(Ford-Fulkerson 标号法求网络最大流)
- 如何解读Caffe源码
- Asp.net 解决下载乱码问题,支持火狐、IE、谷歌等主流浏览器
- 重绘Winform窗体
- centos安装vmware
- java实现快速排序
- poj 3608 Bridge Across Islands (计算几何)
- 归并排序
- codeforces 189A. Cut Ribbon
- laravel5.2 引入自己的扩展类
- linux 挂载img文件 的方法
- 纠正一个自己一个错误
- mybaties 一对多和多对一
- 查看cloudrea的许可证---可用期限