您的位置:首页 > 其它

快速排序2

2014-08-28 11:28 127 查看
public static void quickSort2(int[] a, int left, int right) {
{
int i,j,tmp,pivot ;
if(left>right) {
return;
}
pivot=a[left]; //pivot中存的就是基准数
i=left;
j=right;
while(i!=j)
{
//顺序很重要,要先从右边开始找,如果先从左边找,i++后若满足i>=j则停止,i对应一个大于基准的数,再与基准数交换到左边就不对了!
while(a[j]>=pivot && i<j) {
j--;
}
//再找做左边的
while(a[i]<=pivot && i<j) {
i++;
}
//交换两个数在数组中的位置
if(i<j)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
//最终将基准数归位
swap(a,left,i);
quickSort2(a,left,i-1);//继续处理左边的,这里是一个递归的过程
quickSort2(a,i+1,right);//继续处理右边的 ,这里是一个递归的过程
}
}
static void swap(int[]a ,int i,int j){
int t;
a[i];
a[i] = a[j];
a[j] = t;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: