Sort Target
Algorithm
Speed
Normal ~12s · 34 ms ×2
Powersort(2018)
▶ Try this Source
O(n log n) ✓ Stable ✗ In-place
🔧 How it works

Scans the input for natural runs like Timsort, but schedules merges by computing a "power" value from each run's position and size to determine the provably optimal merge order.

🎯 Key property

The power-based scheduling guarantees a comparison count close to the information-theoretic lower bound on structured inputs, a proven improvement over Timsort's heuristic stack rules when runs have irregular lengths.

👁 Watch for
  • Compare adjacent pairs are tested during the run-detection scan; a power value is computed from each run's position in the array and its length relative to its neighbour
  • RangeCopy when two runs are merged, the shorter is copied into a buffer before the merge begins
  • IndexWrite values from the buffer are written back into the original array as the merge proceeds
Initial State
This is the array before sorting. Follow Powersort step by step.
Main Array
25
0
26
1
27
2
28
3
29
4
30
5
31
6
32
7
24
8
23
9
22
10
21
11
20
12
19
13
18
14
17
15
33
16
34
17
35
18
36
19
37
20
38
21
39
22
40
23
16
24
15
25
14
26
13
27
12
28
11
29
10
30
9
31
41
32
42
33
43
34
44
35
45
36
46
37
47
38
48
39
8
40
7
41
6
42
5
43
4
44
3
45
2
46
1
47
57
48
58
49
59
50
60
51
61
52
62
53
63
54
64
55
56
56
55
57
54
58
53
59
52
60
51
61
50
62
49
63
RunsDetect 0 runs on stack
Waiting for run detection…
0 / 715 ops ( 0.0%) 0.0%
Sorting is
a spectacle.
Algorithms at work, in a daily vertical feed. Watch, play, challenge — and go deeper when you're ready.
Loading 0%
An unhandled error has occurred. Reload 🗙