Java中快速排序算法的实现方法及函数调用
快速排序是一种基于分治思想的排序算法,其思路是先选取一个关键字,将序列中比关键字小的放在左边,大的放在右边,然后对左右两部分分别采用相同的方法进行排序。这是一个递归的过程,直到每个子序列都只剩下一个元素为止。快速排序的平均时间复杂度为O(nlogn),最坏情况下为O(n^2)。
快速排序的算法实现如下:
1. 选择一个基准元素pivot,可以选择序列的 个元素或最后一个元素。
2. 将序列分割成两部分,一部分是小于pivot的元素,另一部分是大于pivot的元素。
3. 对两部分分别进行递归快速排序,直到排序完成。
4. 将左半部分和右半部分合并。
Java中的快速排序算法实现如下:
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right);
quickSort(arr, left, pivot - 1);
quickSort(arr, pivot + 1, right);
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[left];
while (left < right) {
while (left < right && arr[right] >= pivot) {
right--;
}
arr[left] = arr[right];
while (left < right && arr[left] <= pivot) {
left++;
}
arr[right] = arr[left];
}
arr[left] = pivot;
return left;
}
上述代码中,quickSort函数是快速排序的主函数,在排序过程中调用了partition函数,用于将序列分成两部分。partition函数中,首先将序列的 个元素作为pivot,然后从序列的两端开始扫描,将小于pivot的放在左边,大于pivot的放在右边,最后将pivot放在中间位置,返回这个位置。在主函数中,递归执行快速排序的过程,直到子序列中只剩下一个元素为止。
快速排序的函数调用如下:
int[] arr = {5, 3, 8, 4, 2, 1, 9, 6, 7};
quickSort(arr, 0, arr.length - 1);
在Java中,快速排序的函数调用需要提供一个要排序的序列arr和序列的开始和结束位置left、right。上述代码中,创建了一个包含9个元素的int类型数组,然后调用了quickSort函数对其进行排序,将数组的起始位置设为0,结束位置设为arr.length-1。排序完成后,数组的元素就按从小到大的顺序排列。
