随机快排
随机快排
public class test_quickSort {
public static void main(String[] args){
int[] arr = new int[] {7,3,5,8,6,4,3,2,1,6};
quickSort(arr);
}
public static void printArray(int[] arr){
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void quickSort(int[] arr){
if (arr == null && arr.length < 2) {
return;
}
quickSort(arr,0,arr.length-1);
}
public static void quickSort(int[] arr, int l, int r){
if(l < r){
swap(arr,l + (int)((r-l+1)*Math.random()), r);
System.out.println("partition_number="+arr[r]);
int[] p = partition(arr,l,r);
System.out.println("---------");
printArray(arr);
System.out.println("---------");
quickSort(arr,l,p[0]-1);
quickSort(arr,p[1]+1,r);
}
}
public static int[] partition(int[] arr, int l, int r){
int less = l - 1;
int more = r;
while (l < more) {
if(arr[l] < arr[r]){
swap(arr,++less,l++);
} else if(arr[l] > arr[r]){
swap(arr,--more,l);
} else {
l++;
}
}
swap(arr,more,r);
return new int[] {less+1,more};
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 876208453@qq.com
文章标题:随机快排
本文作者:Cai Jun
发布时间:2019-04-02, 14:19:40
最后更新:2019-04-02, 02:21:24
原始链接:http://johncaijun.github.io/2019-04-03-随机快排/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。