使用【泛型】和【Comparator】接口实现满足任何数据类型的selectSort排序算法
1.方法声明
/**
* 可以满足任意类型数据进行排序操作的算法,但是要求用户根据当前数据类型
* 数组提供对应的比较方式,借助于Comparator接口实现类对象传入
*
* @param <T> 自定义泛型T
* @param arr 任意类型数组,同时约束当前泛型T对应的具体数据类型
* @param comparator Comparator接口的实现类对象,对应的具体数据类型和数组一致
*/
public static <T> void selectSort(T[] arr, Comparator<T> comparator)
2.判断数组是否可一操作
if (null == arr || null == comparator || arr.length == 0) {
throw new NullPointerException();
}
如若是以上情况则抛出空指针异常
3.外层循环控制核心算法的循环次数, 从index位置开始找寻极值
for (int i = 0; i < arr.length - 1; i++) {
int index = i;
}
4.内层循环,使用Comparator接口来约束比较规则
for (int j = i + 1; j < arr.length; j++) {
// 使用Comparator接口来约束比较规则
if (comparator.compare(arr[index], arr[j]) > 0) {
index = j;
}
}
5.交换数据,这里按照降序排序,交换使用的数据类型是泛型T
if (index != i) {
T temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}