字典包括学号 姓名请用【java】帮我写一段快排代码,并帮我讲解下实现逻辑
时间: 2024-12-09 07:18:02 浏览: 9
在Java中,快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。下面是一个简单的Java版快速排序代码示例,它适用于你提供的字符串形式的"学号-姓名"键值对,如:"001-张三":
```java
import java.util.Arrays;
import java.util.List;
public class QuickSort {
public static void quickSort(String[] 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(String[] arr, int low, int high) {
String pivot = arr[high]; // 最后一个元素作为基准
int i = low - 1; // 小于基准的元素索引
for (int j = low; j < high; j++) {
// 如果当前元素小于等于基准,交换位置并更新索引
if (arr[j].compareTo(pivot) <= 0) {
i++;
swap(arr, i, j);
}
}
// 将基准元素放到正确的位置
swap(arr, i + 1, high);
return i + 1;
}
private static void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
List<String> keyValueList = Arrays.asList("001-张三", "002-李四", "003-王五");
System.out.println("Before sorting:");
System.out.println(keyValueList);
quickSort(keyValueList.toArray(new String[0]), 0, keyValueList.size() - 1);
System.out.println("After sorting:");
System.out.println(keyValueList);
}
}
```
这个代码首先定义了一个`quickSort`函数,它接受一个字符串数组以及低和高的索引范围。`partition`函数用于找到基准元素并将数组划分为两个子数组。`main`函数展示了如何使用这个排序算法。
阅读全文