快速排序(JAVA)
2017-08-27 12:54
204 查看
/** * 快速排序 * 思路: * 从右往左找比基准值小的,从左往右找比基准值大的,直到无法再找时,将基准值放在确定的位置上,然后递归排序基准值左边和右边的序列 * @author yinming.yu * */ public class QuickSort { public static void main(String[] args) { // TODO Auto-generated method stub int[] data = {5, 3, 1, 24, 423, 56, 657, 878, 43242, 5646, 7868, 45465, 23423, 546, 0, -45}; quickSort(data, 0, data.length-1); for(int i : data){ System.out.print(i+" "); } } public static void quickSort(int[] data, int l, int r){ //判断排序区间是否符合要求 if(l < r){ //记录排序区间起始点,终点,基准值 int i = l, j = r, x = data[i]; //开始第一趟快速排序 while(i < j){ //从右边往左边找比基准值小的 while(i < j && data[j] >=x) j--; if(i < j){ //找到比基准值小的才跳出循环的情况才处理 data[i] = data[j]; i++; } //从左边往右边找大于或等于基准值的值 while(i < j && data[i] < x) i++; if(i < j){ //是因为找到大于或等于基准值的值跳出循环的才处理 data[j] = data[i]; j--; } } //i j 相遇,第一趟结束,i左边的值都小于基准值,右边的值都大于或等于基准值,将之前保存的基准值放入i的位置 data[i] = x; //递归处理i左边和右边的序列 quickSort(data, l, i-1); quickSort(data, i+1, r); } } }
相关文章推荐
- 【排序系列】快速排序java实现
- 快速排序_Java
- JavaScript 、Python Java、Go算法系列之【快速排序】篇
- JAVA实现快速排序
- 快速排序 (Java)
- 数据结构-快速排序 java实现
- java基本排序算法-插入排序-快速排序-选择排序-冒泡排序
- 快速排序Java实现
- Java常见排序:(三)快速排序
- 快速排序java实现
- java---插入排序,冒泡,归并,快速,希尔,堆排序
- JAVA 数据结构之快速排序
- 快速排序示例-java
- 「算法」快速排序 Java 实现
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 快速排序Java实现和Javascript实现
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- 算法实战java实现快速排序
- 快速排序-Java-随机算法
- 快速排序的Java实现