n grows. Green linearithmic or better · amber quadratic · red worst-case blowup.| Size · Extra Memory | Speed · Time Complexity | Stable? | |||
|---|---|---|---|---|---|
| Algorithm | Space | Best case | Average case | Worst case | Preserves order of equal keys |
|
Bubble Sort
adjacent-swap · simple
|
O(1) — in-place
|
O(n) with early exit | O(n²) | O(n²) | Yes |
|
Selection Sort
min-scan · simple
|
O(1) — in-place
|
O(n²) | O(n²) | O(n²) | No |
|
Insertion Sort
shift-&-insert · adaptive
|
O(1) — in-place
|
O(n) nearly-sorted input | O(n²) | O(n²) | Yes |
|
Merge Sort
divide & conquer
|
O(n) — merge buffer
|
O(n log n) | O(n log n) | O(n log n) | Yes |
|
Quick Sort
partition & recurse
|
O(log n) avg · O(n) worst
|
O(n log n) | O(n log n) | O(n²) degenerate pivots | No |
|
Heap Sort
binary heap
|
O(1) — in-place
|
O(n log n) | O(n log n) | O(n log n) | No |
|
Counting Sort
non-comparison · integer
|
O(n + k) — count array
|
O(n + k) | O(n + k) | O(n + k) | Yes |
|
Radix Sort
digit-wise · LSD
|
O(n + k) — k = base
|
O(n · k) | O(n · k) | O(n · k) | Yes |
n — number of elements in the inputk — range of input values (counting sort) or base (radix sort)O(1) extra spaceO(n) best case requires the early-exit optimization (terminate on a pass with no swaps)O(n log n) worst-case is required