简单的快排算法(Java)实现


  这里主要是为了给自己记录一下实现快排的基本流程和思路。

package SortTest;

public class QuickSort {
    /**
     * 递归
     * 以获取的游标为分界,继续往下分
     * @param array
     * @param low
     * @param high
     */
    public static void Sort(int[] array,int low,int high) {
        if(low<high) {
            int piovt=getPiovt(array,low,high);
            Sort(array,low,piovt-1);
            Sort(array,piovt+1,high);
        }
    }
    /**
     * 获得游标
     * @param array
     * @param low
     * @param high
     * @return
     */
    private static int getPiovt(int[] array,int low,int high) {
        int piovt=array[low];
        while(low<high) {
            while(low<high&&piovt<=array[high]) {
                high--;
            }
            swap(array,low,high);
            while(low<high&&piovt>=array[low]) {
                low++;
            }
            swap(array,low,high);
        }
        return low;
    }
    /**
     * 交换
     * @param array
     * @param i
     * @param j
     */
    private static void swap(int[] array,int i,int j) {
        int temp=array[i];
        array[i]=array[j];
        array[j]=temp;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int array[]= {31,78,29,10,10,96,65,12,46};
        Sort(array,0,array.length-1);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
    }

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM