1. 各类排序算法
public void bubbleSort(int [] input) { boolean flag = false; int temp; for (int i = 0;i < input.length;i ++) { flag = false; for (int j = 0;j < input.length - 1 - i;j ++) { if (input[j] < input[j + 1]) { temp = input[j]; input[j] = input[j + 1]; input[j + 1] = temp; flag = true; } } if (flag == false) { return; } } }
- 快速排序(参见快速排序详解)
public int getMid(int [] list, int low, int high) { int temp = list[low]; while (low < high) { while (low < high && list[high] > temp) { high --; } list[low] = list[high]; while(low < high && list[low] < temp) { low ++; } list[high] = list[low]; } list[low] = temp; return low; } public void quickSort(int [] list, int low, int high) { if (low < high) { int middle = getMid(list, low, high); quickSort(list, low, mid - 1); quickSort(list, mid + 1, high); } }
- 归并排序(参见归并排序详解)
public void merge(int []a, int low, int mid, int high) { int []tmp = new int[high - low + 1]; int i = low; int j = mid + 1; int k = 0; while (i <= mid || j <= high) { if (i <= mid && j <= high) { if (a[i] < a[j]) { tmp[k ++] = a[i ++]; } else { tmp[k ++] = a[j ++]; } } else if (i <= mid) { tmp[k ++] = a[i ++]; } else { tmp[k ++] = a[j ++]; } } k = 0; for (k < tmp.length;k ++) { a[low + k] = tmp[k]; } } public void mergeSort(int []a, int low, int high) { int mid = (low +high) / 2; mergeSort(a, low, mid); mergeSort(a, mid + 1, high); merge(a, low, mid, high); }