快速排序
来源:互联网 发布:潮汕话学习软件 编辑:程序博客网 时间:2024/05/16 10:59
package per.array.quicksort;/* * 算法:快速排序 * 原理:选择轴心值(中间值),按数组从左到右和从右到左的顺序依次遍历,规则为小放左 * 思想:分治递归 * */public class QuickSort { //step1-method1:将数组数据分为两部分(partition),左边数据集合<轴心值(一般为arr[0])<右边数据集合 public static int partition(int[] arr, int left, int right) { int pivotValue = arr[left]; int pivotPointer = left; while(left < right) { while(left < right && arr[right] >= pivotValue) right--; while(left < right && arr[left] <= pivotValue) left++; swap(arr, left, right); //把大的交换到右边,把小的交换到左边。 } swap(arr, pivotPointer, left); //最后把pivot交换到中间 return left; } //step2:分治递归 partition(0,pivotPointer-1)和partition(pivotPointer+1,maxindex) public static void quickSort(int[] arr, int left, int right) { if(left >= right) return ; //得到轴心位置下标 int pivotPoint = partition(arr, left, right); //轴心左侧partition quickSort(arr, left, pivotPoint-1); //轴心右侧partition quickSort(arr, pivotPoint+1, right); } //step3:实现快速排序 public static void sort(int[] arr) { if(arr == null || arr.length == 0) return ; quickSort(arr, 0, arr.length-1); } //preparation:交换数组元素值 public static void swap(int[] arr, int left, int right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; }}
复习算法,已忘记出处--谢谢作者
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Java编程思想笔记——第二章 一切都是对象
- heap&stack 区别
- ZipInputStream使用
- 109. Convert Sorted List to Binary Search Tree
- php7.0.13 pdo无法开启问题
- 快速排序
- Unity3D小游戏 - BallGame安卓打包
- 死锁与预防措施
- jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告
- Julia: Array过滤
- 一个简单的计算器(Java)
- QT之如何去除部件虚线框
- 查找---动态查找
- 数据结构-栈的应用