快速排序(Quick Sort)是一種常用的排序算法,其核心思想是通過一趟排序?qū)⒋判蛐蛄蟹指畛瑟?dú)立的兩部分,其中一部分的所有元素都比另一部分的所有元素小,然后再按此方法對這兩部分分別進(jìn)行排序,以達(dá)到整個(gè)序列有序的目的。
Java 中的快速排序可以通過遞歸實(shí)現(xiàn),具體步驟如下:
1.選取一個(gè)基準(zhǔn)元素(pivot),通常選擇第一個(gè)或最后一個(gè)元素作為基準(zhǔn)元素。
2.將序列中小于基準(zhǔn)元素的放在基準(zhǔn)元素的左邊,大于等于基準(zhǔn)元素的放在基準(zhǔn)元素的右邊。
3.對基準(zhǔn)元素左右兩部分遞歸執(zhí)行上述步驟,直到所有元素都有序。
以下是 Java 中快速排序的實(shí)現(xiàn)代碼:
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;
}
}
快速排序的時(shí)間復(fù)雜度為 O(nlogn),空間復(fù)雜度為 O(logn)。