您的位置:首页 > 其它

划分--快速排序

2009-11-30 23:25 232 查看
代码很简单。就不解释了。就说说自己写代码时遇到的问题吧。
无辜的总有一个0值,插入到 左边;

12 10 3 198 120 8 54 7
----------------
12 10 3 0 0 8 54 7

只因为,数组长度是10,但是只有8个数据,所以就有2个数组元素为0

package high;

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();
}

}
本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/237051
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: