quickSort排序出错,求大佬帮忙看下
算法吧
全部回复
仅看楼主
level 1
5945040 楼主
package com.oa.array;
import java.util.Random;
public class QuickSort {
private QuickSort(){
}
public static int[] generateRandomArray(int n){
if(n<0 || n>100000000) {
System.out.println("超出范围");
int[] arr ={-1};
return arr;
}
int [] arr= new int[n];
Random random = new Random();
for(int i=0; i<n; i++){
arr[i]=random.nextInt(n*4);
}
return arr;
}
private static void sort(int []arr){
sort(arr,0,arr.length-1);
}
private static void sort(int[]arr,int l,int r){
if(l >= r) return;
int point = partition(arr,l, r);
sort(arr,l,point-1);
sort(arr,point+1, r);
}
public static int partition(int[] arr,int left,int right){
int j=left;
for(int i = left+1; i<=right; i++){
if(arr[i]<arr[j]){
j++;
swap(arr, i , j);
}
}
swap(arr,left,j);
return j;
}
public static void swap(int[] arr,int a, int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static void main(String[] args) {
//int[] a = QuickSort.generateRandomArray(10);
int []a ={87,12,13,14,15,16,12,11,10};
for (int i=0; i<a.length; i++){
System.out.print(a[i] + ",");
}
System.out.println();
sort(a);
for (int i=0; i<a.length; i++){
System.out.print(a[i] + ",");
}
}
}
2022年04月18日 05点04分 1
level 1
5945040 楼主
知道错误原因了
2022年04月19日 01点04分 2
level 12
应该是if(arr[i]<arr[left])
2022年04月19日 01点04分 3
[老虎] 是的
2022年04月19日 02点04分
1