参考 http://www.cyc2018.xyz/
1. 所有排序算法实现Sort 抽象类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public abstract class Sort<T extends Comparable<T>> { public abstract void sort(T[] numbs);
protected boolean less(T v, T w) { return v.compareTo(w) < 0; }
protected void swap(T[] a, int i, int j) { T t = a[i]; a[i] = a[j]; a[j] = t; } }
|
2. 选择排序
将 第一位 与后面的数字逐一比较, 若找到比 第一位小的, 则交换位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public void sort(T[] numbs) { for (int i = 0; i < numbs.length - 1; i++) { int min = i; for (int j = i + 1; j < numbs.length; j++) { if (less(numbs[j], numbs[min])) { min = j; } } swap(numbs, i, min); } }
|
3. 冒泡排序
通过循环依次交换元素, 每次循环将本次最大的元素移动到末尾,像是冒泡, 并且下一次循环不需要