使用Java实现快速排序算法的函数代码
发布时间:2023-06-25 13:51:25
快速排序是一种常见的排序算法,它的时间复杂度为O(nlogn),相对于其他排序算法具有较好的效率和性能。在Java中,我们可以通过编写以下代码来实现快速排序。
public static void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return; // 左指针大于右指针,停止递归
}
int i = left; // 左指针
int j = right; // 右指针
int pivot = arr[left]; // 设置基准值为数组的 个元素
while (i < j) {
// 从右往左找小于基准值的元素
while (i < j && arr[j] >= pivot) {
j--;
}
// 从左往右找大于基准值的元素
while (i < j && arr[i] <= pivot) {
i++;
}
// 如果左指针小于右指针,则交换i和j所指向的元素
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 最后交换基准值和左指针所指向的元素
arr[left] = arr[i];
arr[i] = pivot;
// 递归排序左半部分和右半部分
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
在这段代码中,我们首先判断左指针是否大于等于右指针,如果是则停止递归排序。接着,我们设置左指针为数组的 个元素,右指针为数组的最后一个元素,并设置基准值为数组的 个元素。
之后,我们在数组中从右往左找小于基准值的元素,并在数组中从左往右找大于基准值的元素,如果左指针小于右指针,则交换i和j所指向的元素。最后,我们交换基准值和左指针所指向的元素,并对左半部分和右半部分分别递归进行快速排序。
通过以上代码的实现,我们可以将一个无序的整型数组进行排序,并且时间复杂度为O(nlogn),具有较高的排序效率和性能。
