3-排序-快速排序
2015-10-15 15:50
253 查看
一、算法描述
排序算法中的一种
二、算法理解
选定枢轴,通过一次排序,实现枢轴左边的数都比枢轴小,右边的数都比枢轴大;再分别对枢轴两边数据进行递归操作。
三、算法实现
3.1、思路
两个函数:
分隔函数partition(一次排序过程,返回枢轴位置)
递归函数(完成递归过程)
深层次理解:所有枢轴位置排好后,排序工作就完成了
3.2、示意图
3.3、实现
四、其他
4.1、
http://ahalei.blog.51cto.com/4767671/1365285 http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html http://blog.csdn.net/xuxurui007/article/details/7639863
http://blog.csdn.net/wangkuifeng0118/article/details/7286332
http://blog.csdn.net/morewindows/article/details/6684558
4.2、
递推递归,回溯算法,穷举搜索,排列组合、冒泡排序
排序算法中的一种
二、算法理解
选定枢轴,通过一次排序,实现枢轴左边的数都比枢轴小,右边的数都比枢轴大;再分别对枢轴两边数据进行递归操作。
三、算法实现
3.1、思路
两个函数:
分隔函数partition(一次排序过程,返回枢轴位置)
递归函数(完成递归过程)
深层次理解:所有枢轴位置排好后,排序工作就完成了
3.2、示意图
3.3、实现
public class QuickSort { public static void main(String[] args) { int [] array = {34,21,12,37,57,62,2}; quickSort(array, 0, array.length - 1); for (int i = 0; i < array.length; i++) { System.out.print(array[i] + ", "); } } public static void quickSort(int[]n ,int left,int right){ int pivot = 0; // 枢轴 if (left < right) { pivot = partition(n, left, right); //对左右数组递归调用快速排序,直到顺序完全正确 quickSort(n, left, pivot - 1); quickSort(n, pivot + 1, right); } } public static int partition(int[]n ,int left,int right){ int pivotkey = n[left]; while (left < right) { while (left < right && n[right] >= pivotkey) { right--; } n[left] = n[right]; //将比枢轴小的元素移到低端,此时right位相当于空,等待低位比pivotkey大的数补上 while (left < right && n[left] <= pivotkey) { left++; } n[right] = n[left]; //将比枢轴大的元素移到高端,此时left位相当于空,等待高位比pivotkey小的数补上 } n[left] = pivotkey; // 当left == right,完成一趟快速排序,此时left位相当于空,等待pivotkey补上 return left; } }
四、其他
4.1、
http://ahalei.blog.51cto.com/4767671/1365285 http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html http://blog.csdn.net/xuxurui007/article/details/7639863
http://blog.csdn.net/wangkuifeng0118/article/details/7286332
http://blog.csdn.net/morewindows/article/details/6684558
4.2、
递推递归,回溯算法,穷举搜索,排列组合、冒泡排序
相关文章推荐
- 参数为函数指针
- Android:根据上下文Context获取Activity
- 使用LinkedHashMap构建LRU的Cache
- Python 基础语法(一)
- linux批量重命名
- Golang闭包
- 程序员重装系统后,要安装的工具
- 设置hidesBottomBarWhenPushed无效果
- AndroidSQLite建表语句
- SQL SERVER – Repair a SQL Server Database Using a Transaction Log Explorer
- 一位年薪百万老员工的离职忠告
- 欢迎使用CSDN-markdown编辑器
- 多线程的那点儿事(之避免死锁)
- 抽象类和接口的区别
- 计算机网络七层协议模型
- 浅谈HTTP中Get与Post的区别(转)
- 在数据库实现一个搜索功能
- jquery
- 2-查找-二分查找
- 关联、组合、聚合、依赖关系比较