快速排序Java实现
来源:互联网 发布:php编写软件 编辑:程序博客网 时间:2024/06/17 03:58
/**
* 快速排序
*
* @author Mary
*
*/
public class QuickSort {
/**
* 采用“三数中值分割法”选取枢纽元(pivot)
*
* @param a
* 要比较的数组
* @param left
* 左边元素索引
* @param right
* 右边元素索引
* @return
*/
@SuppressWarnings("unused")
private static <AnyType extends Comparable<? super AnyType>> AnyType median3(
AnyType[] a, int left, int right) {
int center = (left + right) / 2;
if (a[center].compareTo(a[left]) < 0)
swapReferences(a, left, center);
if (a[right].compareTo(a[left]) < 0)
swapReferences(a, left, center);
if (a[right].compareTo(a[center]) < 0)
swapReferences(a, center, right);
swapReferences(a, center, right - 1);
return a[right - 1];
}
/**
* 数组中两个元素的交换
*
* @param a
* @param left
* @param center
*/
private final static <AnyType extends Comparable<? super AnyType>> void swapReferences(
AnyType[] a, int left, int center) {
AnyType temp = a[left];
a[left] = a[center];
a[center] = temp;
}
@SuppressWarnings("unused")
private static <AnyType extends Comparable<? super AnyType>> void quicksort(
AnyType[] a, int left, int right) {
AnyType pivot = median3(a,left,right);
//开始快速排序
int i = left,j = right-1;
for(;;){
while(a[++i].compareTo(pivot)<0){}
while(a[--j].compareTo(pivot)>0){}
if(i<j)
swapReferences(a, i, j);
else
break;
}
//重新获得枢纽元
swapReferences(a, i, right-1);
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
}
0 0
- java实现快速排序
- 快速排序Java实现
- 快速排序java实现
- 快速排序JAVA实现
- Java实现快速排序
- 快速排序--Java实现
- 快速排序java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- 快速排序java实现
- 快速排序Java实现
- Java实现快速排序
- java快速排序实现
- JAVA实现快速排序
- java实现快速排序
- java 实现快速排序
- iPhone的UDID与push中使用的device token的关系
- uva 10986(最短路径)
- IBM探索推荐引擎——资源汇总
- 每天学习一点C++之一
- 菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)
- 快速排序Java实现
- java数据类型
- 《unix高级环境编程》进程控制——进程时间
- lucene之 MMAnalyzer 中文分词组件
- OpenCV——高斯模糊与毛玻璃特效
- WEB服务器端口更改后Wordpress访问自动跳转老端口
- 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)
- UVA - 10245 The Closest Pair Problem 分治法
- UML类图关系