快速排序的基本思路:
1、在数组a中,有一段待排序的数据,下标从l到r。2、取a[l]放在变量value中,通过由右、左两边对value的取值的比较,为value选择应该排定的位置。这时要将比value大的数放右边,比它小的数放左边。当value到达最终位置后(如下标m),由它划分了左右两个集合[l..m-1]、[m+1..r]。然后转第1步,再用相同的思路分别去处理左集合和右集合。1 import java.math.BigInteger; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 5 6 public class Main { 7 public static void main(String[] args) { 8 int[] a = {5,6,3,1,5,4,5,7,8,3}; 9 f(a,0,a.length-1);10 System.out.println(Arrays.toString(a));11 }12 public static void f(int[] a,int l,int r){13 if(l>=r) return;14 int temp = a[l];15 int l1 = l;16 int r1 = r;17 boolean flag = true;18 while(l1temp){29 a[r1] = a[l1];30 r1--;31 flag = true;32 }else{33 l1++;34 }35 }36 37 }38 a[l1] = temp;39 f(a,l,l1-1);40 f(a,l1+1,r);41 }42 }