import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;
public class Division_sequence {
public static void main(String[] args) {
Integer a[]= {1,2,5,8,9,0,3,4,6,7};
String b[]= {"AoMen","BeiJing","ChongQing","TianJin","XiangGang","ShangHai"};
Double c[]= {0.5,3.7,6.3,8.5,9.2,1.7,2.3,4.1,5.9,7.4};
ArrayList<Integer> A=new ArrayList<Integer>();
for (int i = 0; i< a.length; i++) {
A.add(a[i]);
}
Vector<String> B=new Vector<String>();
for (int i = 0; i< b.length; i++) {
B.add(b[i]);
}
LinkedList<Double> C=new LinkedList<Double>();
for (int i = 0; i< c.length; i++) {
C.add(c[i]);
}
Integer j=LinearList.partition((List)A,0,a.length-1,new Greater());
System.out.println(A);
System.out.println(j);
j=LinearList.partition((List)B,0,b.length-1,new Less());
System.out.println(B);
System.out.println(j);
j=LinearList.partition((List)C,0,c.length-1,new Greater());
System.out.println(C);
System.out.println(j);
}
}
class LinearList{
public static int partition(List<Comparable> a,int p,int r,Comparator comp) {
Comparable x= a.get(r);
int i=p-1;
for(int j=p;j<r;j++) {
if(comp.compare(a.get(j), x)<=0) {
i++;
Collections.swap(a, i, j);
}
}
Collections.swap(a, i+1, r);
return i+1;
}
}
class Greater implements Comparator<Comparable>{
@Override
public int compare(Comparable x, Comparable y) {
// TODO Auto-generated method stub
return x.compareTo(y);
}
}
class Less implements Comparator<Comparable>{
@Override
public int compare(Comparable x, Comparable y) {
// TODO Auto-generated method stub
return y.compareTo(x);
}
} ————许
算法学习(3)序列的划分
最新推荐文章于 2022-12-21 10:41:32 发布