回归基础系列-快速排序[JAVA]
来源:互联网 发布:手机接收卫星电视软件 编辑:程序博客网 时间:2024/06/05 00:27
快速排序:
基本思想:选择个基准数(一般是第一个元素或最后一个元素),然后以基准数分开左右边。
* 左边全部比基准数小
* 右边全部比基准数大
* 直到左右指针相等,交换下标为左右指针相等的数和基准数
* 递归重复。
/** * 快速排序 * * @author Ant * */public class QuickSort { /** * 基本思想:选择个基准数(一般是第一个元素或最后一个元素),然后以基准数分开左右边。 * 左边全部比基准数小 * 右边全部比基准数大 * 直到左右指针相等。交换基准数 * 递归重复。 * * 不妨假设左右移动指针为“左右步兵”。他们找到该找的位置后交换。直到相遇。 * @param a * @param left * @param right */ public static void quickSort(int a[], int left, int right) { //大前提,当left>right,递归结束。 if(left>right) return; //定义两移动步兵i,j 。 一个存基准数的key int i, j, key; i = left; j = right; key = a[left];//基准数 //当他们还没相遇时 while(i!=j){ //右步兵要找比基准数要小的数,停下来。否则向左移动。 while(a[j] >= key && i<j) j--; //左步兵要找比基准数要大的数,停下来。否则向右移动。 while(a[i] <= key && i<j) i++; //当他们都停下来,交换彼此位置 if(i<j){ int t = a[i]; a[i] = a[j]; a[j] = t; } } //最后他们相遇了。交换相遇位置和基准位置。 a[left] = a[i]; a[i] = key; //递归 quickSort(a, left, i-1); quickSort(a, i+1, right); } public static void main(String[] args) { int a[] = { 11, 38, 24, 10, 3, 5, 18 }; QuickSort.quickSort(a, 0, a.length - 1); for (int i = 0; i < a.length; i++) { System.out.println(a[i] + " "); } }}
0 0
- 回归基础系列-快速排序[JAVA]
- 回归基础系列-冒泡排序-[JAVA]
- 回归基础系列-插入排序[JAVA]
- 回归基础系列-选择排序[JAVA]
- [回归基础系列]-简单选择排序[JAVA]
- 回归基础系列-JAVA基本知识[JAVA]
- 【排序系列】快速排序java实现
- java基础之快速排序
- JAVA基础:快速排序 、冒泡排序
- 基础算法系列(十八)排序算法之快速排序
- 回归基础系列-重载与覆盖(重写)[JAVA]
- java算法系列之一:快速排序算法
- 排序系列--快速排序
- Java算法基础之快速排序算法
- Java算法基础之快速排序算法
- java基础冒泡,选择和快速排序
- java 算法基础~快速排序算法
- 快速排序java实现(基础)
- hdu1166敌兵布阵<树状数组---模板>
- DFS-zb的生日
- 正则大全
- 【BZOJ2243】[SDOI2011]染色【树链剖分】【线段树】
- 数组中指针的应用
- 回归基础系列-快速排序[JAVA]
- 反向传播算法(过程及公式推导)
- Use libvirt to conmunicate with qemu
- libcurl上传文件到服务器的几种方式
- 专题一 Problem C
- 10.ARM汇编指令集详解
- C++上机练习
- Android的系统架构
- POJ 2485 Highways(Prim中最大边)