快速排序(Quick Sort)是一种常用的排序算法,其核心思想是通过一趟排序将待排序序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再按此方法对这两部分分别进行排序,以达到整个序列有序的目的。
Java 中的快速排序可以通过递归实现,具体步骤如下:
1.选取一个基准元素(pivot),通常选择第一个或最后一个元素作为基准元素。
2.将序列中小于基准元素的放在基准元素的左边,大于等于基准元素的放在基准元素的右边。
3.对基准元素左右两部分递归执行上述步骤,直到所有元素都有序。
以下是 Java 中快速排序的实现代码:
public class QuickSort {
public void sort(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
quickSort(arr, 0, arr.length - 1);
}
private void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left + 1, j = right;
while (i <= j) {
if (arr[i] < pivot) {
i++;
} else if (arr[j] >= pivot) {
j--;
} else {
swap(arr, i++, j--);
}
}
swap(arr, left, j);
quickSort(arr, left, j - 1);
quickSort(arr, j + 1, right);
}
private void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
快速排序的时间复杂度为 O(nlogn),空间复杂度为 O(logn)。