排序
来源:互联网 发布: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