为 Vector 添加sort()快速排序方法

SortVector .java:

import java.util.Vector;


interface Compare{
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
public class SortVector extends Vector{
private Compare compare;
public SortVector(Compare comp){
compare = comp;
}
public void sort(){
quickSort(0, size()-1);
}
private void quickSort(int left, int right){
if(right > left){
Object ol = elementAt(right);
int i = left - 1;
int j = right;
while(true){
while(compare.lessThan(elementAt(++i), ol));
while(j>0){
if(compare.lessThanOrEqual(elementAt(--j), ol)){
break;
}
}
if(i >= j){
break;
}
swap(i, j);
}
swap(i, right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2){
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}

}


2、StringSortTest .java:

import java.util.Enumeration;

public class StringSortTest {
static class StringCompare implements Compare{


@Override
public boolean lessThan(Object lhs, Object rhs) {
return ((String)lhs).toLowerCase().compareTo(((String)rhs).toLowerCase()) < 0;
}


@Override
public boolean lessThanOrEqual(Object lhs, Object rhs) {
return ((String)lhs).toLowerCase().compareTo(((String)rhs).toLowerCase()) <= 0;
}

}
public static void main(String[] args) {
SortVector sv = new SortVector(new StringCompare());
sv.addElement("d");
sv.addElement("A");
sv.addElement("b");
sv.addElement("D");
sv.addElement("c");
sv.addElement("B");
sv.addElement("f");
sv.sort();
Enumeration e = sv.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}
}
}

结果:

A
b
B
c
d
D
f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值