sort/quick-sort
Quick Sort
- best
- O(n log n)
- average
- O(n log n)
- worst
- O(n^2)
- space
- O(log n)
- stability
- unstable
- method
- comparison
pick a language to open the code
def quick_sort(a, lo=0, hi=None): if hi is None: hi = len(a) - 1 if lo >= hi: return pivot = a[hi] cut = lo for i in range(lo, hi): if a[i] < pivot: a[i], a[cut] = a[cut], a[i] cut += 1 a[cut], a[hi] = a[hi], a[cut] quick_sort(a, lo, cut - 1) quick_sort(a, cut + 1, hi)
function quickSort(a, lo = 0, hi = a.length - 1) { if (lo >= hi) return; const pivot = a[hi]; let cut = lo; for (let i = lo; i < hi; i++) { if (a[i] < pivot) { [a[i], a[cut]] = [a[cut], a[i]]; cut++; } } [a[cut], a[hi]] = [a[hi], a[cut]]; quickSort(a, lo, cut - 1); quickSort(a, cut + 1, hi); }
static void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } void quick_sort(int a[], int lo, int hi) { if (lo >= hi) return; int pivot = a[hi]; int cut = lo; for (int i = lo; i < hi; i++) { if (a[i] < pivot) swap(a, i, cut++); } swap(a, cut, hi); quick_sort(a, lo, cut - 1); quick_sort(a, cut + 1, hi); }
void quick_sort(std::vector<int>& a, int lo, int hi) { if (lo >= hi) return; int pivot = a[hi]; int cut = lo; for (int i = lo; i < hi; i++) { if (a[i] < pivot) std::swap(a[i], a[cut++]); } std::swap(a[cut], a[hi]); quick_sort(a, lo, cut - 1); quick_sort(a, cut + 1, hi); }
static void QuickSort(int[] a, int lo, int hi) { if (lo >= hi) return; int pivot = a[hi]; int cut = lo; for (int i = lo; i < hi; i++) { if (a[i] < pivot) { (a[i], a[cut]) = (a[cut], a[i]); cut++; } } (a[cut], a[hi]) = (a[hi], a[cut]); QuickSort(a, lo, cut - 1); QuickSort(a, cut + 1, hi); }
static void swap(int[] a, int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } static void quickSort(int[] a, int lo, int hi) { if (lo >= hi) return; int pivot = a[hi]; int cut = lo; for (int i = lo; i < hi; i++) { if (a[i] < pivot) swap(a, i, cut++); } swap(a, cut, hi); quickSort(a, lo, cut - 1); quickSort(a, cut + 1, hi); }