Java函数实现数组元素排序:快速排序方法
发布时间:2023-07-19 00:09:40
快速排序是一种常用的排序算法,其基本思想是选取一个基准元素,将数组中小于基准元素的元素放在左边,大于基准元素的元素放在右边,然后再分别对左右两个子数组进行排序,递归地进行下去,直到整个数组有序。
下面是用Java实现的快速排序算法:
public class QuickSort {
public 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[low]; // 选取 个元素作为基准元素
while (low < high) {
// 从右往左找 个小于基准元素的元素
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high]; // 将小于基准元素的元素移到左边
// 从左往右找 个大于等于基准元素的元素
while (low < high && arr[low] < pivot) {
low++;
}
arr[high] = arr[low]; // 将大于等于基准元素的元素移到右边
}
arr[low] = pivot; // 将基准元素放置到最终的位置
return low; // 返回基准元素的索引
}
public static void main(String[] args) {
int[] arr = {9, 5, 7, 1, 3, 6, 4, 8, 2};
quickSort(arr, 0, arr.length - 1);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
上述代码中的quickSort方法是递归实现快速排序的关键部分,它接收一个数组和两个指示排序范围的索引参数。首先判断low是否小于high,如果是则将数组划分为两个子数组,并获取基准元素的索引pivotIndex。然后递归调用quickSort方法对左右两个子数组进行排序。
在递归过程中,partition方法才是真正实现排序的地方。它以low所指的元素作为基准元素,通过遍历交换数组元素的方式,将小于基准元素的元素放在基准元素的左边,大于基准元素的元素放在基准元素的右边,最终将基准元素放置到正确的位置上。该方法返回基准元素的索引,以供quickSort方法划分子数组。
最后,在main方法中调用quickSort方法对给定的数组进行排序,并打印排序后的结果。
使用快速排序算法可以高效地对数组进行排序,其平均时间复杂度为O(nlogn)。在实际应用中,快速排序是一种常用且高效的排序算法。
