java数据结构和算法(MergeSort2)
来源:互联网 发布:天然气软件收费系统 编辑:程序博客网 时间:2024/05/23 13:45
package cn.xyc.sort;import cn.xyc.sortBase.SortBase;import cn.xyc.sortUtil.GetDataUtil;/** * * 描述:归并排序,对小于15的数组采用插入排序 * * <pre> * HISTORY * **************************************************************************** * ID DATE PERSON REASON * 1 2016年10月9日 80002253 Create * **************************************************************************** * </pre> * * @author 蒙奇·D·许 * @since 1.0 */@SuppressWarnings("rawtypes")public class MergeSort2 extends SortBase {private static Comparable[] aux;private static int limit = 15;// 长度超过的使用插入排序private static void merge(Comparable[] a, int lo, int mid, int hi) {// 复制数组for (int k = lo; k <= hi; k++) {aux[k] = a[k];}int i = lo;int j = mid + 1;for (int k = lo; k <= hi; k++) {if (i > mid) {a[k] = aux[j++];} else if (j > hi) {a[k] = aux[i++];} else if (less(aux[j], aux[i])) {a[k] = aux[j++];} else {a[k] = aux[i++];}}}public static void sortAsc(Comparable[] a) {long s = System.currentTimeMillis();aux = new Comparable[a.length];sortAsc(a, 0, a.length - 1);long e = System.currentTimeMillis();System.out.println("归并2排序使用的时间为:" + (e - s) + "ms");}private static void sortAsc(Comparable[] a, int lo, int hi) {if (hi <= lo)return;if (hi - lo <= limit) {for (int i = lo; i <= hi; i++) {// i为未排序的元素,默认0位元素已经排序完成// 遍历的是已经排序完成的部分Comparable temp = a[i];int ins = i;for (int j = i - 1; j >= lo && less(temp, a[j]); j--) {// 移动位置为temp腾出空位a[j + 1] = a[j];ins = j;}// 在ins出插入元素if (ins != i) {a[ins] = temp;}}return;}int mid = lo + (hi - lo) / 2;// 将左半边排序sortAsc(a, lo, mid);// 将右半边排序sortAsc(a, mid + 1, hi);merge(a, lo, mid, hi);}public static void main(String[] args) {Comparable[] data = GetDataUtil.getData("d:/user/80002253/桌面/a.txt");sortAsc(data);show(data);}}
0 0
- java数据结构和算法(MergeSort2)
- JAVA数据结构和算法
- Java 数据结构和算法
- java 数据结构和算法
- Java数据结构和算法
- java数据结构和算法
- Java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java的数据结构和算法
- Java数据结构和算法--链表
- Java数据结构和算法(总结)
- Java数据结构和算法--链表
- Java数据结构和算法--链表
- spring prototype的每个对象中中创建singleton的bean
- 【Unity】编辑器下同时播放多个粒子特效
- Linux文本处理命令sed基本使用示例
- C#命名规范
- Linux系统日志管理文章内容
- java数据结构和算法(MergeSort2)
- 充电状态三色指示灯
- Apicloud中在frame中加载数据未完成时显示加载进度条
- java数据结构和算法(MergeSort)
- jquery datagrid 所有资料
- 顺时针打印矩阵 按圈打印 java
- 香港五个遊客不常到的本地拍攝熱門地點
- Android 强大的图片加载缓存— Glide
- JQuery 可见性过滤器