首页 > 代码库 > 快速排序

快速排序

快速排序的基本思路:
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(l1<r1){
19             if(flag){
20                 if(a[r1]<temp){
21                     a[l1] = a[r1];
22                     l1++;
23                     flag = false;
24                 }else{
25                     r1--;
26                 }
27             }else{
28                 if(a[l1]>temp){
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 }

 

快速排序