码迷,mamicode.com
首页 > 编程语言 > 详细

快排+java实现

时间:2018-05-04 13:59:14      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:max   tostring   print   class   partition   取出   array   quic   system   

import java.util.Arrays;

public class QuickSort {
    //三数取中法。取出不大不小的那个位置
    public static int getPivotPos(int[] a,int low,int high) {
        int mid=(low+high)/2;
        int pos=low;
        int minpos=low;
        int maxpos=low;
        if(a[mid]<a[minpos]) minpos=mid;
        if(a[high]<a[minpos]) minpos=high;
        if(a[mid]>a[maxpos]) maxpos=mid;
        if(a[high]>a[maxpos]) maxpos=high;
        if(low!=minpos&&low!=maxpos) pos=low;
        if(mid!=minpos&&mid!=maxpos) pos=mid;
        if(high!=minpos&&high!=maxpos) pos=high;
        return pos;
    }
    //划分,取出枢纽位置
    public static int partition(int[] a,int low,int high) {
        int pivotpos=getPivotPos(a,low,high);
        int pivot=a[pivotpos];
        int temp=pivot;
        a[pivotpos]=a[low];
        a[low]=temp;
        while(low<high) {
            while(low<high&&a[high]>=pivot) high--;
                a[low]=a[high];
            while(low<high&&a[low]<=pivot)  low++;
                a[high]=a[low];
        }
        a[low]=pivot;
        return low;
    }
    //快排
    public static void quickSort(int[] a,int low,int high) { 
        if(low<high) {
            int pivotpos=partition(a,low,high);
            quickSort(a,low,pivotpos-1);
            quickSort(a,pivotpos+1,high);
        }
    }
    //重载快排
    public static void quickSort(int[] a) {
        if(a.length==0)
            return;
        int low=0;
        int high=a.length-1;
        quickSort(a,low,high);
    }
    
    public static void main(String[] args) {
        int[] a= {12,32,24,99,54,76,48};
        quickSort(a);
        System.out.println(Arrays.toString(a));
    }
}

 

快排+java实现

标签:max   tostring   print   class   partition   取出   array   quic   system   

原文地址:https://www.cnblogs.com/heyboom/p/8989841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!