快速排序算法

来源:互联网 发布:如何用图片在淘宝搜索 编辑:程序博客网 时间:2024/05/22 02:00
package com.fonxian;import java.util.Random;public class Quick {    public static void sort(int[] a){        sort(a,0,a.length-1);    }    private static void sort(int[] a,int lo,int hi){        if(hi <= lo) return;        int j = partition(a,lo,hi);        sort(a,lo,j-1);        sort(a,j+1,hi);    }    //切分    private static int partition(int[] a,int lo,int hi){        int i = lo,j = hi + 1;        int v = a[lo];        while(true){            while(less(a[++i],v)) if(i == hi) break;            while(less(v,a[--j])) if(j == lo) break;            if(i >= j) break;            exch(a,i,j);        }        exch(a,lo,j);        return j;    }    //交换数值    private static void exch(int[] a,int i,int j){        int t = a[i];        a[i] = a[j];        a[j] = t;    }    //判断v是否小于w    private static boolean less(int v,int w){        return  (v<w)?true:false;    }    //显示排序后结果    private static void show(int[] a){        for(int i = 0;i < a.length;i++)            System.out.print(a[i]+" ");        System.out.println();    }    public static void main(String[] args) {        int[] a={3,4,8,7,5,6,1};            sort(a);        show(a);    }}
0 0
原创粉丝点击