排序

来源:互联网 发布:js获取div的value值 编辑:程序博客网 时间:2024/05/17 04:47
快速排序(以第一个为基准)public class Test {    public static void main(String[] args) {        int[] a = {1 , 5 , 3 , 9 ,7 ,8 , 2 , 4 , 6 , 0};        sort(a , 0 , a.length - 1);        for (int i : a) {            System.out.println(i);        }    }    public static void sort(int[] a , int start , int end){        if(start < end){            int i = start , j = end , x = a[i];            while(i < j){                while ( i < j && a[j] >= x)                    j--;                if(i < j)                    a[i++] = a[j];                while(i < j && a[i] <= x)                    i++;                if(i < j){                    a[j--] = a[i];                }            }            a[i] = x;            sort(a , start , i - 1);            sort(a , i + 1 , end);        }    }}private static void qsort(int[] a) {        qsort(a, 0, a.length - 1);    }    private static void qsort(int[] a, int start, int end) {        if (start >= end) {            return;        }        int index = random.nextInt(end - start + 1) + start;        swap(a, index, end);        index = start;        for (int i = start; i < end; i++) {            if (a[i] < a[end]) {                swap(a, index, i);                index++;            }        }        swap(a, index, end);        qsort(a, start, index - 1);        qsort(a, index + 1, end);    }选择排序private static void sort(int[] a) {        for (int i = 0; i < a.length - 1; i++) {            int min = i;            for (int j = i + 1; j < a.length; j++) {                if (a[min] > a[j]) {                    min = j;                }            }            if (min != i) {                swap(a, i, min);            }        }}冒泡排序private static void sort3(int[] a) {        for (int i = a.length - 1; i > 0; i--) {            for (int j = 0; j < i; j++) {                if (a[j] > a[j + 1]) {                    swap(a, j, j + 1);                }            }        }    }插入排序private static void sort2(int[] a) {        for (int i = 1; i < a.length; i++) {            for (int j = i - 1; j >= 0; j--) {                if (a[j + 1] < a[j]) {                    swap(a, j + 1, j);                } else {                    break;                }            }            //System.out.println(Arrays.toString(a));        }    }交换private static void swap(int[] a, int i, int j) {        if (i == j) {            return;        }        //a[i] = 0b10, a[j] = 0b11;        a[i] ^= a[j];        //a[i] = 0b01, a[j] = 0b11;        a[j] ^= a[i];        //a[i] = 0b01, a[j] = 0b10;        a[i] ^= a[j];        //a[i] = 0b11, a[j] = 0b10;    }
0 0
原创粉丝点击