您的位置:首页 > 产品设计 > UI/UE

数据算法之快速排序(quickSort)的Java实现

2017-01-19 10:51 399 查看
  本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。

  快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。

  如图所示



输入:数据元素数组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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: