您的位置:首页 > 编程语言 > Java开发

快速排序的Java实现(二路快排)

2017-10-25 18:22 162 查看


开始从一边遍历,如果遇到arr[i]>l,那么开始遍历另一边,知道另一边遇到arr[j]

/**
*快速排序,默认是l=0,r=arr.length-1
*/
public static  void quickSort(int[] arr,int l,int r){
if(l < r){
int i = l,j = r,x = arr[l];
while(i<j){
while(i < j && arr[j] > x)
j--;
if(i < j){
arr[i++] = arr[j];
/**
* 首先执行arr[i] = arr[j]
* 然后执行 i++
*/
}
while(i < j && arr[i] < x)
i++;
if(i < j){
arr[j --] = arr[i];
}
}
arr[i] = x;
quickSort(arr,l,i-1);
quickSort(arr,i+1,r);
}
}
public static void printSorted(int[] arr,int l,int r){
if(l==0 && r == arr.length - 1) {
test.quickSort(arr,l,r);
}else{
System.out.println("输入的参数不合法");
return ;
}
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: