3-8 三路快速排序法
来源:互联网 发布:nginx访问php变成下载 编辑:程序博客网 时间:2024/05/31 19:39
三路快排在双路快排的基础之上,把与标定点元素等值的元素排在了数组的中间位置。
比较从第 1 版的快速排序,到两个优化,再到指针对撞的快速排序,在到三路快速排序,它们在思路上的变化。
三路快速排序的思路展示:
代码实现:
/** * 三路快速排序 * Created by liwei on 17/6/8. */public class QuickSortTest03 { @Test public void test03() { int[] arr = ArrayUtil.generateRandomArray(1000000,1,1000000000); quickSort3Ways(arr, 0, arr.length - 1); System.out.println(ArrayUtil.judgeArraySorted(arr)); } /** * @param arr * @param left * @param right */ private void quickSort3Ways(int[] arr, int left, int right) { if (left >= right) { return; } int v = arr[left]; int lt = left; int gt = right + 1; int i = left + 1; while (i < gt) { if (arr[i] < v) { swap(arr, lt + 1, i); i++; lt++; } else if (arr[i] > v) { swap(arr, gt - 1, i); gt--; } else { // arr[i]==v i++; } } swap(arr, left, lt); quickSort3Ways(arr, left, lt - 1); quickSort3Ways(arr, gt, right); } private void swap(int[] arr, int index1, int index2) { int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; }}
阅读全文
0 0
- 3-8 三路快速排序法
- 三路快速排序
- 快速排序的三路划分法
- 快速排序法(三)
- 快速排序法(三)
- 快速排序法(三)
- 三种快速排序法
- Java三路快速排序
- 快速排序(单,双,三路)
- 快速排序(三)
- 快速排序三种
- 三.快速排序
- 排序之三----快速排序
- 排序算法之三路划分的快速排序
- 3-7 双路快速排序法
- Algorithm(三):快速排序
- 三向切分快速排序
- 三向字符串快速排序
- 项目构建打包坑
- Bundle
- android应用全局数据的使用- 写入数据: SharedPreferences(三)
- Tries 模板
- 3-7 双路快速排序法
- 3-8 三路快速排序法
- Busybox init进程启动过程 (资料收集)
- Mac Android Studio更新gradle
- 关于springMVC 接收json字符串集合的问题
- 3-9 归并排序和快速排序的衍生问题
- HTTP协议详解(真的很经典)
- 麻将
- AVFoundation学习笔记(四): 媒体的创建与编辑
- 数据库事务隔离