数据结构与算法——快速排序
来源:互联网 发布:caffe ubuntu 编辑:程序博客网 时间:2024/05/24 11:14
冒泡系列,冒泡排序的升级版(个人理解为二分冒泡)
代码实现:
/** * 快速排序 * * @author kushanmao * @date 2017-7-8 */public class QuickSort { /** * 划分数组 */ public static int partition(long[] arr, int left, int right, long pivot) { int leftPos = left - 1; int rightPos = right; while (true) { // 将比pivot小的移动到左边 while (leftPos < rightPos && arr[++leftPos] < pivot); // 将比pivot大的移动到右边 while (leftPos < rightPos && arr[--rightPos] > pivot); if (leftPos >= rightPos) { break; } else { long tmp = arr[leftPos]; arr[leftPos] = arr[rightPos]; arr[rightPos] = tmp; } } long tmp = arr[leftPos]; arr[leftPos] = arr[right]; arr[right] = tmp; return leftPos; } public static void display(long[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.print("]"); } /** * 排序 * @param arr * @param left * @param right */ public static void sort(long[] arr, int left, int right) { if (right - left <= 0) { return; } else { // 获取关键字 long point = arr[right]; // 获取切入点,同时划分数组 int pivot = partition(arr, left, right, point); // 对左边数组排序 sort(arr, left, pivot - 1); // 对右边数组排序 sort(arr, pivot + 1, right); } }}
总结:快速排序是一种冒泡排序,但是不像简单冒泡排序一个个的移动,而是将数组划分成两部分,相对于关键字小的在一边,大的在一边,如此重复,直至排序完毕;
阅读全文
0 0
- 数据结构与算法——快速排序
- 数据结构与算法——快速排序
- 数据结构与算法——快速排序
- 【数据结构与算法】排序算法——快速排序
- 【数据结构与算法】排序算法——快速排序
- 数据结构【排序算法】——快速排序
- 算法与数据结构——快速排序 Quick Sort
- 数据结构与算法分析——快速排序
- 快速排序(quick sort)——数据结构与算法复习
- 《数据结构与算法分析(c描述》—— 快速排序
- 数据结构与算法-快速排序
- 【数据结构与算法】快速排序
- [数据结构与算法]快速排序
- 数据结构与算法:快速排序
- 数据结构与算法-快速排序
- 数据结构与算法-----快速排序
- [数据结构与算法]快速排序
- 【数据结构与算法】快速排序
- JavaBean中DAO设计模式介绍
- git分支详解
- OpenStack多节点安装(三):Glance
- Java注解(Annotation)
- Linux 中 反引号 单引号 双引号的作用
- 数据结构与算法——快速排序
- TCP协议
- Ionic3隐藏tab的方法
- ionic开发项目创建
- JS数组的深浅拷贝
- 【小游戏】C++扫雷
- 2小时学会spring Root(慕课网)
- Spring Boot 自动加载指定包下的拦截器
- QLCDNumber学习整理