例题:假设有一个整数数组nums,请问如何对它进行快速排序?
分析:快速排序是一种常用的排序算法,它利用了分治的思想,将一个大问题分解成若干个小问题,通过递归的方式解决。具体实现时,我们可以选择一个基准值pivot,将数组划分成两个部分,一部分小于等于pivot,一部分大于pivot,然后对两个部分分别进行递归排序。
Java代码实现:
public static void quickSort(int[] nums) {
if (nums == null || nums.length <= 1) {
return;
}
quickSortHelper(nums, 0, nums.length - 1);
}
private static void quickSortHelper(int[] nums, int left, int right) {
if (left >= right) {
return;
}
int pivotIndex = partition(nums, left, right);
quickSortHelper(nums, left, pivotIndex - 1);
quickSortHelper(nums, pivotIndex + 1, right);
}
private static int partition(int[] nums, int left, int right) {
int pivot = nums[right];
int i = left;
for (int j = left; j < right; j++) {
if (nums[j] <= pivot) {
swap(nums, i, j);
i++;
}
}
swap(nums, i, right);
return i;
}
private static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
代码分析:
- 选择一个基准值pivot,将数组划分成两个部分,一部分小于等于pivot,一部分大于pivot。
- 对两个部分分别进行递归排序。