快速排序Java代码

博客给出了一段完整的Java代码实现快速排序。代码中定义了排序方法,通过寻找划分元下标,对划分元左右分别排序。还给出了一个数组排序过程示例,最后输出排序后的数组。

以下是快速排序的一段完整的Java代码,如有不完整地方可补充。
import java.util.Arrays;
/例如 5,2,7,4,6,1,9
排序过程:
5,2,1,4,6,7,9
4,2,1,5,6,7,9
1,2,4,5,6,7,9
1,2,4,5,6,7,9
/

public class partition {
public static void main(String args[]) {
int a[]=new int[] {5,2,7,4,6,1,9};
qSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
private static void qSort(int a[],int p,int r) {
if(p<r) {
int q=part(a,p,r);//寻找划分元下标
qSort(a,p,q-1);//对划分元左边进行排序
qSort(a,q+1,r);//对划分元右边进行排序
}
}
public static int part(int a[],int p,int r) {
int left=p+1,right=r;
int key=a[p];
while(true) {
//往右寻找比key大的元素
while(a[left]<key&&left<r) {
++left;
}
//往左寻找比key小的元素
while(a[right]>key) {
–right;
}
//如果左下标大于等于右下标,跳出循环
if(left>=right) break;
//left<right,两元素值交换
int temp=a[left];
a[left]=a[right];
a[right]=temp;
}
//起始元素和右下标元素交换
a[p]=a[right];
a[right]=key;
return right;
}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值