----------------
12 10 3 0 0 8 54 7
public class PartinSort {
private int a[];
public int elems; //数据的长度,不是数组的长度
private int maxSize;
public PartinSort(int maxSize){
this.maxSize = maxSize;
a = new int[maxSize];
elems =0;
}
public void add(int i){
if(elems==maxSize){
return;
}
a[elems] = i;
elems ++;
}
public void display(){
for(int i=0;i<elems;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
// 注意传值调用陷阱
public void swap(int i, int j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public int partinIt(int left,int right,int num){
int leftPrev = left -1;
int rightBack = right +1;
while(true){
while(a[++leftPrev]<num){
}
while(a[--rightBack]>num){
}
if(leftPrev >= rightBack){
break;
}else{
swap(leftPrev,rightBack);
}
}
return leftPrev;
}
public static void main(String args[]){
PartinSort array = new PartinSort(10);
array.add(12);
array.add(10);
array.add(3);
array.add(198);
array.add(120);
array.add(8);
array.add(54);
array.add(7);
array.add(1);
array.add(111);
array.add(4);
array.display();
System.out.println(array.partinIt(0, 9, 100));
array.display();
}
}

















