package sort;
import java.util.Comparator;
public class QuickSort<T extends Comparable> extends Sort<T>{
public QuickSort(T[] list,Comparator<T> comparator){
super(list,comparator);
}
public QuickSort(T[] list){
super(list);
}
@SuppressWarnings({"unused","unchecked"})
private boolean isAfter(T a,T b){
if(comparator==null){
return a.compareTo(b)>0?true:false;
}else{
if( comparator.compare(a, b)>0)
return true;
else return false;
}
}
@SuppressWarnings({"unused","unchecked"})
private boolean isEqual(T a,T b){
return a.compareTo(b)==0?true:false;
}
public void sort(){
this.quickSort(0,this.list.length-1);
}
@SuppressWarnings({"unchecked"})
private void quickSort(int i,int j){
if(j-i<1)
return;
Object[] equals=new Object[j-i+1];
Object[] temp=new Object[j-i+1];
int equalNum=1;
int beforeNum=0;
int afterNum=0;
int m=i;
int a=0;
int b=temp.length-1;
while(m<j){
if(this.isBefore(list[m],list[j])){
temp[a]=list[m];
beforeNum++;
a++;
}//else if(this.isAfter(list[m],list[j])){
else if(!this.isBefore(list[m],list[j])){
temp[b]=list[m];
afterNum++;
b--;
}else{
equals[equalNum]=list[m];
equalNum++;
}
m++;
}
for(int k=0;k<equalNum;k++){
temp[a]=list[j];
a++;
}
for(int t=0;t<temp.length;t++){
this.list[i+t]=(T)temp[t];
}
quickSort(i,i+beforeNum-1);
quickSort(j-afterNum+1,j);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java排序算法包 支持自定义比较条件
共16个文件
java:11个
class:5个
需积分: 16 18 下载量 162 浏览量
2010-11-06
23:28:39
上传
评论
收藏 8KB RAR 举报
温馨提示
Java排序算法包 支持多种排序 支持各种排序要求 前提是自己写了排序的比较器
资源推荐
资源详情
资源评论
收起资源包目录
sort.rar (16个子文件)
sort
ReverseOrder.java 247B
Sort.java 999B
ConverseOrder.java 243B
Test.class 656B
SelectSort.java 386B
HeapSort.class 1KB
AbsOrder.java 289B
Test.java 486B
QuickSort.java 2KB
HeapSort.java 909B
BubbleSort.java 690B
MergeSort.class 2KB
InsertSort.java 785B
MergeSort.java 1KB
QuickSort.class 2KB
Sort.class 1KB
共 16 条
- 1
资源评论
xiean_hi
- 粉丝: 0
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功