通常我们希望排序算法不只是用来排序数字,对对象也进行排序,对泛型加以约束

核心方法

泛型类需要实现Comparable接口,实现compareTo方法
a.compareTo(b) a比b小返回-1,等于返回0,大于返回1 具体逻辑可以自己实现

以选择排序为例

  1. public class SelectionSort<E> {
  2. private SelectionSort(){}
  3. public static <E extends Comparable<E>> void selection(E[] arr) {
  4. if (arr.length <= 1) {
  5. return;
  6. }
  7. for (int i = 0; i < arr.length; i++) {
  8. //当前最小数的下标
  9. int minPos = i;
  10. for (int j = i + 1; j < arr.length; j++) {
  11. //获得未排序的最小数下标
  12. minPos = arr[minPos].compareTo(arr[j]) <= 0 ? minPos : j;
  13. }
  14. //最小数和当前下标的数交换位置
  15. E temp = arr[i];
  16. arr[i] = arr[minPos];
  17. arr[minPos] = temp;
  18. }
  19. }
  20. }