快速排序java

来源:互联网 发布:js原生代码隐藏div 编辑:程序博客网 时间:2024/06/10 13:21
package jianzhioffer;import java.util.Arrays;public class QuickSort {    // 一次排序    public static int partition(int data[], int start, int end) {        if (data.length <= 0 || start < 0 ) {            System.err.println("不合法");        }        int key = start;        int value = data[0];        while (start != end) {        if (key<end) {            if (value < data[end]) {                    swap(data, key, end);                    key = end;                } else {                    end--;                }            } else {                if (value > data[start]) {                    swap(data, start, key);                    key = start;                } else {                    start++;                }            }        }        return key;    }    //交换数组元素    public static void swap(int data[], int i, int j) {        data[i] ^= data[j];        data[j] = data[i] ^ data[j];        data[i] ^= data[j];    }    //递归排序左右子序列    public static void quickSort(int[] data, int start, int end) {        if (start == end) {            return;        }        int key = partition(data, start, end);        if(key<end)        quickSort(data, key+1, end);        if(key>start)        quickSort(data, start, key-1);    }    //测试    public static void main(String[] args) {        int[] data = new int[] { 2, 5, 1, 5, 7, 8 };        quickSort(data, 0, data.length - 1);        System.out.println(Arrays.toString(data));    }}
原创粉丝点击