Android开发中可用的快速排算法工具类,可以轻松集成到项目中。它包含泛型支持和便于调用的静态方法,能够对数组或列表进行排序。
工具类代码
import java.util.List;
public class QuickSortUtil {
/**
* 对数组进行快速排序
*
* @param arr 待排序的数组
*/
public static void quickSort(int[] arr) {
if (arr == null || arr.length <= 1) return;
quickSort(arr, 0, arr.length - 1);
}
private static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1); // 排序左半部分
quickSort(arr, pivotIndex + 1, high); // 排序右半部分
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high]; // 基准值
int i = low - 1; // 标记小于基准值的最后位置
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high); // 将基准值放到正确位置
return i + 1; // 返回基准值位置
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
/**
* 对 List 进行快速排序
*
* @param list 待排序的列表
* @param <T> 支持比较的类型
*/
public static <T extends Comparable<T>> void quickSort(List<T> list) {
if (list == null || list.size() <= 1) return;
quickSort(list, 0, list.size() - 1);
}
private static <T extends Comparable<T>> void quickSort(List<T> list, int low, int high) {
if (low < high) {
int pivotIndex = partition(list, low, high);
quickSort(list, low, pivotIndex - 1); // 排序左半部分
quickSort(list, pivotIndex + 1, high); // 排序右半部分
}
}
private static <T extends Comparable<T>> int partition(List<T> list, int low, int high) {
T pivot = list.get(high); // 基准值
int i = low - 1; // 标记小于基准值的最后位置
for (int j = low; j < high; j++) {
if (list.get(j).compareTo(pivot) < 0) {
i++;
swap(list, i, j);
}
}
swap(list, i + 1, high); // 将基准值放到正确位置
return i + 1; // 返回基准值位置
}
private static <T> void swap(List<T> list, int i, int j) {
T temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
代码解析
支持的功能
- 数组排序:
- 方法
quickSort(int[] arr)用于对整型数组排序。
- 方法
- 列表排序:
- 方法
quickSort(List<T> list)用于对实现了Comparable接口的列表排序(如ArrayList)。
- 方法
- 核心方法:
- 递归地将数组或列表分区,并对左右两部分排序。
适配 Android 的特点
- 泛型支持:
- 可以对任何实现了
Comparable的对象进行排序(例如自定义对象)。
- 可以对任何实现了
- 轻量级:
- 不依赖额外的库,可以直接在 Android 项目中使用。
- 内存友好:
- 快速排序是原地排序算法,仅需少量额外空间。
调用示例
排序整型数组
int[] numbers = {8, 3, 1, 7, 0, 10, 2};
QuickSortUtil.quickSort(numbers);
// 输出结果
for (int num : numbers) {
System.out.print(num + " ");
}
// 输出:0 1 2 3 7 8 10
排序列表(自定义对象)
定义一个简单的对象类 Student:
class Student implements Comparable<Student> {
String name;
int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
@Override
public int compareTo(Student other) {
return Integer.compare(this.grade, other.grade);
}
@Override
public String toString() {
return name + ": " + grade;
}
}
调用 quickSort 排序:
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 85));
students.add(new Student("Bob", 92));
students.add(new Student("Charlie", 78));
QuickSortUtil.quickSort(students);
// 输出结果
for (Student student : students) {
System.out.println(student);
}
// 输出:
// Charlie: 78
// Alice: 85
// Bob: 92
小结
这个快速排序工具类在 Android 项目中很实用,尤其适合处理动态列表、数据对象排序等场景。例如:
- 排序 RecyclerView 数据源。
- 对后台接口返回的 JSON 数据(经过解析)进行排序。
- 在游戏排行榜或电子商务应用中,对分数或价格进行排序。
直接将工具类复制到项目中即可快速使用!序算法工具类
当前文章价值7.61元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

评论已关闭!