
Idea: Partition around a pivot
O(n log n)O(n²)O(log n)Why popular
Java note
Arrays.sort(int[]))public class QuickSort {
public static void sort(int[] a) {
quick(a, 0, a.length - 1);
}
private static void quick(int[] a, int l, int r) {
if (l >= r) return;
int p = partition(a, l, r);
quick(a, l, p - 1);
quick(a, p + 1, r);
}
// Lomuto partition with pivot=a[r]
private static int partition(int[] a, int l, int r) {
int pivot = a[r];
int i = l; // place for next smaller/equal
for (int j = l; j < r; j++) {
if (a[j] <= pivot) swap(a, i++, j);
}
swap(a, i, r);
return i;
}
private static void swap(int[] a, int i, int j) {
int t = a[i]; a[i] = a[j]; a[j] = t;
}
}
Watch for
Mental model: ⚡ Pivot decides everything