Learn
Practice
Interview
Resources
Newsletter
F
Toggle theme
0
F
0
Toggle menu
Animations
← Back to All Animations
Single-Threaded CPU
Bookmark
Input
Example 1
Same Enqueue
Example 3
Custom
enqueueTimes
=
[1, 2, 3, 4]
,
processingTimes
=
[2, 4, 2, 1]
,
tasks
=
[[1,2], [2,4], [3,2], [4,1]]
T0
[1,2]
T1
[2,4]
T2
[3,2]
T3
[4,1]
0
2
4
6
8
10
always run the ready task with the shortest processing time
T0
[1,2]
T1
[2,4]
T2
[3,2]
T3
[4,1]
0
2
4
6
8
10
always run the ready task with the shortest processing time
t =
0
done =
0
/ 4
T0
[1,2]
T1
[2,4]
T2
[3,2]
T3
[4,1]
0
2
4
6
8
10
sort tasks by
enqueue time
t =
1
done =
0
/ 4
T0
[1,2]
T1
[2,4]
T2
[3,2]
T3
[4,1]
ready (min-heap):
T0:2
0
2
4
6
8
10
idle
no ready tasks → jump t from
0
to
1
t =
3
done =
1
/ 4
T0
[1,2]
1
T1
[2,4]
T2
[3,2]
T3
[4,1]
0
2
4
6
8
10
idle
T0
order:
0
run
T0
(shortest proc =
2
) → t =
3
t =
3
done =
1
/ 4
T0
[1,2]
1
T1
[2,4]
T2
[3,2]
T3
[4,1]
ready (min-heap):
T2:2
T1:4
0
2
4
6
8
10
idle
T0
order:
0
T1, T2
arrived by t =
3
→ ready
t =
5
done =
2
/ 4
T0
[1,2]
1
T1
[2,4]
T2
[3,2]
2
T3
[4,1]
ready (min-heap):
T1:4
0
2
4
6
8
10
idle
T0
T2
order:
0
2
run
T2
(shortest proc =
2
) → t =
5
t =
5
done =
2
/ 4
T0
[1,2]
1
T1
[2,4]
T2
[3,2]
2
T3
[4,1]
ready (min-heap):
T3:1
T1:4
0
2
4
6
8
10
idle
T0
T2
order:
0
2
T3
arrived by t =
5
→ ready
t =
6
done =
3
/ 4
T0
[1,2]
1
T1
[2,4]
T2
[3,2]
2
T3
[4,1]
3
ready (min-heap):
T1:4
0
2
4
6
8
10
idle
T0
T2
T3
order:
0
2
3
run
T3
(shortest proc =
1
) → t =
6
t =
10
done =
4
/ 4
T0
[1,2]
1
T1
[2,4]
4
T2
[3,2]
2
T3
[4,1]
3
0
2
4
6
8
10
idle
T0
T2
T3
T1
order:
0
2
3
1
run
T1
(shortest proc =
4
) → t =
10
t =
10
done =
4
/ 4
T0
[1,2]
1
T1
[2,4]
4
T2
[3,2]
2
T3
[4,1]
3
0
2
4
6
8
10
idle
T0
T2
T3
T1
order:
0
2
3
1
order = [0, 2, 3, 1]
algo
master
.
io
Step:
Start: 4 tasks as [enqueueTime, processingTime]
0 / 9
Input
Example 1
Same Enqueue
Example 3
Custom
enqueueTimes
=
[1, 2, 3, 4]
,
processingTimes
=
[2, 4, 2, 1]
,
tasks
=
[[1,2], [2,4], [3,2], [4,1]]
0 / 9
algo
master
.
io
Step:
Start: 4 tasks as [enqueueTime, processingTime]