java数据结构和算法(QuickSort2)
来源:互联网 发布:hlsl知乎 编辑:程序博客网 时间:2024/05/21 10:48
package cn.xyc.sort;import cn.xyc.sortBase.SortBase;import cn.xyc.sortUtil.GetDataUtil;/** * * 描述:快速排序 * * <pre> * HISTORY * **************************************************************************** * ID DATE PERSON REASON * 1 2016年9月20日 80002253 Create * **************************************************************************** * </pre> * * @author 80002253 * @since 1.0 */@SuppressWarnings("rawtypes")public class QuickSort2 extends SortBase {private static int limit = 15;public static void sortAsc(Comparable[] a) {long s = System.currentTimeMillis();sortAsc(a, 0, a.length - 1);long e = System.currentTimeMillis();System.out.println("快速排序(小数组使用插入排序)使用的时间为:" + (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 partition = partition(a, lo, hi);sortAsc(a, lo, partition - 1);sortAsc(a, partition + 1, hi);}private static int partition(Comparable[] a, int lo, int hi) {int i = lo;int j = hi + 1;Comparable v = a[lo];while (true) {// i先向右移动,直到碰到一个大于lo的元素,此时停止移动,准备和j交换while (less(a[++i], v)) {if (i == hi) {break;}}// j向左移动,直到碰到一个小于lo的元素,此时停止移动,准备和i交换while (less(v, a[--j])) {if (j == lo) {break;}}// i大于等于j时说明相遇了,说明已经遍历完成,退出遍历交换j和lo的位置if (i >= j)break;// 交换i和j的元素的位置,保证lo左边的元素比lo小,右边的元素比lo大exch(a, i, j);}// 交换j和lo的位置exch(a, lo, j);return j;}public static void main(String[] args) {// GenerateDataFileUtil.generate("d:/user/80002253/桌面/a.txt", 1000000);Comparable[] a = GetDataUtil.getData("d:/user/80002253/桌面/a.txt");QuickSort2.sortAsc(a);// show(a);a = GetDataUtil.getData("d:/user/80002253/桌面/a.txt");QuickSort.sortAsc(a);// show(a);}}
0 0
- java数据结构和算法(QuickSort2)
- JAVA数据结构和算法
- Java 数据结构和算法
- java 数据结构和算法
- Java数据结构和算法
- java数据结构和算法
- Java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java数据结构和算法
- java的数据结构和算法
- Java数据结构和算法--链表
- Java数据结构和算法(总结)
- Java数据结构和算法--链表
- Java数据结构和算法--链表
- 杭电 2092 【思路错误】【推理公式大法好】【如果两者都为0,则输入结束——理解错误】整数解
- 2016年第40届普吉隆ACM世界总决赛
- 向maven仓库中手动安装本地jar的最简单的方法
- MyEclise 常用的快捷键
- OpenCV: 颜色空间转换 cvtColor()出错?注意浮点数精度
- java数据结构和算法(QuickSort2)
- Caffe傻瓜系列(9):训练和测试自己的图片
- UITableView reloadData的正确方法
- GUID与字符串之间的恩恩怨怨
- 计算机视觉库OpenCV初步了解
- Nagios系统监控指标扩展
- 绘制点、线、面
- 线段树内容详解
- http post上传数据