快速排序

思路:采用分治思想,每次划分时将该组的第一个数字作为轴值,划分后在该轴值左边的数均不大于该轴值,轴值右边的数均不小于该轴值。再递归划分轴值两边的组。

复制代码
import java.util.*;
import static java.lang.System.*;

public class Main{
    static Scanner in = new Scanner(System.in);
    
    static int Partition(int a[],int first,int last)
    {
        int i=first,j=last;
        while(i<j)
        {
            while(i<j&&a[i]<=a[j]) j--;
            if(i<j)
            {
                int temp=a[i];
                a[i]=a[j];
                a[j]=temp;
                i++;
            }
            while(i<j&&a[i]<=a[j]) i++;
            if(i<j)
            {
                int temp=a[i];
                a[i]=a[j];
                a[j]=temp;
                j--;
            }
        }
        return i;
    }
    
    static void QuickSort(int a[],int first,int last)
    {
        if(first<last)
        {
            int pivot=Partition(a,first,last);
            QuickSort(a,first,pivot-1);
            QuickSort(a,pivot+1,last);
        }
    }
    
    public static void main(String[] args)
    {
        int a[] = {3,2,9,7,5,4};
        QuickSort(a,0,a.length-1);
        for(int elem:a)
            out.print(elem);
        out.println();
    }
}
复制代码

 

posted on   vCoders  阅读(230)  评论(0编辑  收藏  举报

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示