快速排序(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)。