数据算法之快速排序(quickSort)的Java实现
2017-01-19 10:51
399 查看
本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。
如图所示
输入:数据元素数组r,划分序列区间[low..high]
输出:将序列划分为两个子序列并返回枢轴元素的位置
输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序
快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。
如图所示
输入:数据元素数组r,划分序列区间[low..high]
输出:将序列划分为两个子序列并返回枢轴元素的位置
private int partition(Object[] r, int low, int high){ Object pivot = r[low]; //使用r[low]作为枢轴元素 while (low<high){ //从两端交替向内扫描 while(low<high&&strategy.compare(r[high],pivot)>=0) high--; r[low] = r[high]; //将比pivot 小的元素移向低端 while(low<high&&strategy.compare(r[low],pivot)<=0) low++; r[high] = r[low]; //将比pivot 大的元素移向高端 } r[low] = pivot; //设置枢轴 return low; //返回枢轴元素位置 }
输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序
public void quickSort(Object[] r, int low, int high){ if (low<high){ int pa = partition(r,low,high); quickSort(r,low,pa-1); quickSort(r,pa+1,high); } }
相关文章推荐
- 数据算法之快速排序(quickSort)的Java实现
- 数据结构——快速排序原理及算法Java实现
- 快速排序(quicksort)算法实现
- 快速排序(quicksort)算法实现
- 快速排序(quicksort)算法实现
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(上)
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(上)
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(下)
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(下)
- 数据挖掘-基于Kmeans算法、MBSAS算法及DBSCAN算法的newsgroup18828文本聚类器的JAVA实现(下)
- 数据挖掘-基于Kmeans算法、MBSAS算法及DBSCAN算法的newsgroup18828文本聚类器的JAVA实现(上)
- ’快速排序‘ (quicksort)算法的探讨(1)--- 处理大量重复数据
- 算法1-快速排序(java实现)
- 优先队列的实现 Java数据结构与算法
- 用JAVA实现排序算法之四:快速排序
- 数据算法基于FPGA的图像处理(七)--Verilog实现均值滤波Strut2教程-java教程
- 快速排序 算法 Java 实现
- 快速排序(quicksort)算法实现
- 数据结构与算法——基数排序简单Java实现
- 快速排序(QuickSort)原理及Java 实现