Java的Qsort排序
时间: 2024-09-18 20:01:34 浏览: 37
Java的Quicksort(快速排序),是一种常用的基于比较的排序算法,它通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
以下是Java中实现快速排序的基本步骤:
1. **选择基准值**:从待排序数组中随机选择一个元素作为基准值(pivot)。
2. **分区操作**:将数组分为两部分,一部分所有元素都小于基准值,另一部分所有元素都大于等于基准值。这个过程通常使用两个指针i(开始)和j(结束),i从数组左侧开始,j从右侧开始,当i指向的元素小于基准值且j未超过i时,交换i和j的元素,直到i和j相遇。
3. **递归排序**:对划分出来的左右两个子数组递归地进行上述过程,直到每个子数组只剩下一个元素或为空。
4. **合并结果**:所有的子数组排序完成后,整个数组也就按顺序排列好了。
下面是一个简单的Java版本的快速排序代码片段:
```java
public class QuickSort {
public 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 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 void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
阅读全文