Sort Target
Algorithm
Speed
Normal ~12s · 30 ms ×4
Timsort(2002)
▶ Try this Source
O(n log n) ✓ Stable ✗ In-place
🔧 How it works

Scans the input for naturally ordered runs, uses Insertion sort to extend any run shorter than a minimum length (minrun), then merges runs from a stack using a strategy that keeps stack heights balanced.

🎯 Key property

Adaptive, the more existing order the input has, the fewer merges are needed, approaching O(n) on nearly-sorted data; this is why it was chosen as the standard library sort for CPython and Java.

👁 Watch for
  • Compare adjacent pairs are tested during the run-detection scan; each confirmed run is pushed onto the merge stack
  • IndexWrite Insertion sort extends runs that fall below minrun, stitching short sequences into longer ones before any merging begins
  • RangeCopy when the stack triggers a merge, the shorter of the two runs is copied into a buffer; sorted values are then written back
Initial State
This is the array before sorting. Follow Timsort 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 / 1,598 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 🗙