java快速排序实现
2016-07-20 19:23
337 查看
最近读《java常用算法》,对书中快排实现的逻辑解释如下
public static void quickSort(int[] arr, int left, int right) { int f, t; int rtemp, ltemp; f = arr[(left + right) / 2];// 分界值 ltemp = left; rtemp = right; while (ltemp < rtemp) { while (arr[ltemp] < f) { // 找到左边不小于分界值的数值位置 a ++ltemp; // 移动 } while (arr[rtemp] > f) { // 找到右边不大于分界值的数值位置 b --rtemp; // 移动 } if (ltemp <= rtemp) { // 如果此时 a的位置在b位置左边 交换 t = arr[ltemp]; arr[ltemp] = arr[rtemp]; arr[rtemp] = t; ++ltemp; //继续移动左边 --rtemp; //继续移动右边 } } if (ltemp == rtemp) { //此处注释的话会少循环一次,但是书里有这个逻辑,暂时不明白为什么 ltemp++; } System.out.print("f:"+f+" "); for (int i : arr) { System.out.print(i + ","); } System.out.println(); if (left < rtemp) { //如果右边的指针没有移动到最左边 继续递归左边部分 quickSort(arr, left, ltemp - 1); } if (right > ltemp) {//如果左边的指针没有移动到最右边 继续递归右边部分 quickSort(arr, rtemp + 1, right); } }
相关文章推荐
- Java基本语法-----java注释
- Java基本语法-----java注释
- Java学习历程之Day01&Day02
- RxJava之五—— observeOn()与subscribeOn()的详解
- Java中的栈与堆
- Java JVM:内存结构和相关参数含义
- Java第二天——标识符命名规则、Java的知识、快捷键的使用、Scanner获取值的常用方法
- 练习笔记
- Java GC 日志分析秒懂!
- 使用 java 命令编译运行 java 程序
- 第三章:Java基础程序设计(3)
- mac jdk8 maven 出现Exception in thread "main" java.lang.UnsupportedClassVersionError:
- js解析json数组+java对象转json字符串
- java 垃圾回收机制 finalize System.gc
- java
- Adnroid Retrifit2.0 多图片上传 服务端Java
- java线程池(ThreadPoolExecutor)实例讲解
- 二叉树层次遍历打印
- java图片识别 [Tesseract-OCR]
- KMP算法部分匹配值计算-Java实现