Sorting

Selection Sort

  • О(n^2) comparisons, О(n) swaps

  • naive implementation for sorting

Insertion Sort

  • О(n^2) comparisons and swaps

  • O(1) auxiliary space

  • can run online

  • stable

Merge Sort

  • O(n log(n)) by divide and conquer

  • O(n) auxiliary space

  • stable; deterministic

Quick Sort

  • O(n log(n)) by divide and conquer; worst case O(n) though

  • O(1) auxiliary space; one of exchange sorts (cf. bubble sort)

  • unstable; randomized

Introsort

  • hybrid sorting algorithm

  • derived from quicksort, heapsort, and insertion sort

  • unstable

Timsort

  • hybrid sorting algorithm

  • derived from merge sort and insertion sort

  • stable

Distribution Sort

  • O(n+m) non-comparative sorting algorithms: radix sort, bucket sort, digital sort, pigeonhole sort

  • it avoids comparison by creating and distributing elements into buckets according to their radix

  • the lower bound for comparative sorting algorithm is O(n log(n)); in certain cases, non-comparative sorting can do better, e.g., O(n)

Topological Sort

  • for directed acyclic graph (DAG)

  • output a linear ordering of its vertices

Tree Sort

  • builds a binary search tree from the elements to be sorted, and then traverses the tree (in-order) so that the elements come out in sorted order.

  • Its typical use is sorting elements online: after each insertion, the set of elements seen so far is available in sorted order.

Last updated