Representing the mergesort algorithm diagram in plantuml?

+1 vote
asked Mar 6, 2025 in Question / help by khrosofdsfov (160 points)

https://imgur.com/a/oaUom7h

I mean something like this shown in imgur link. Is this possible in any form?

2 Answers

+1 vote
answered Mar 6, 2025 by dickmaley (4,160 points)
selected Mar 7, 2025 by khrosofdsfov
 
Best answer

There are many ways diagram a mergesort using plantuml.  With an initial array of [13,8,19,23,6,17,5,11] and a final array of [5,6,8,11,13,17,19,23] here is one solution:

image


@startuml
title Mergesort Diagram

skinparam monochrome true
skinparam shadowing false

rectangle "[13,8,19,23,6,17,5,11]" as arr1381923617511

rectangle "[13,8,19,23]" as arr1381923
rectangle "[6,17,5,11]" as arr617511

arr1381923617511 --> arr1381923 : Split
arr1381923617511 --> arr617511 : Split

rectangle "[13,8]" as arr138
rectangle "[19,23]" as arr1923
rectangle "[6,17]" as arr617
rectangle "[5,11]" as arr511

arr1381923 --> arr138 : Split
arr1381923 --> arr1923 : Split
arr617511 --> arr617 : Split
arr617511 --> arr511 : Split

rectangle "[13]" as arr13
rectangle "[8]" as arr8
rectangle "[19]" as arr19
rectangle "[23]" as arr23
rectangle "[6]" as arr6
rectangle "[17]" as arr17
rectangle "[5]" as arr5
rectangle "[11]" as arr11

arr138 --> arr13 : Split
arr138 --> arr8 : Split
arr1923 --> arr19 : Split
arr1923 --> arr23 : Split
arr617 --> arr6 : Split
arr617 --> arr17 : Split
arr511 --> arr5 : Split
arr511 --> arr11 : Split

rectangle "[8,13]" as arr813
rectangle "[19,23]" as arr1923m
rectangle "[6,17]" as arr617m
rectangle "[5,11]" as arr511m

arr13 -- arr813 : Merge
arr8 -- arr813 : Merge
arr19 -- arr1923m : Merge
arr23 -- arr1923m : Merge
arr6 -- arr617m : Merge
arr17 -- arr617m : Merge
arr5 -- arr511m : Merge
arr11 -- arr511m : Merge

rectangle "[8,13,19,23]" as arr8131923
rectangle "[5,6,11,17]" as arr561117

arr813 -- arr8131923 : Merge
arr1923m -- arr8131923 : Merge
arr617m -- arr561117 : Merge
arr511m -- arr561117 : Merge

rectangle "[5,6,8,11,13,17,19,23]" as arr5681113171923

arr8131923 -- arr5681113171923 : Merge
arr561117 -- arr5681113171923 : Merge

@enduml

Dick Maley

0 votes
answered Mar 6, 2025 by dickmaley (4,160 points)

Here is another solution

image

@startuml
skinparam monochrome true

entity "Initial Array" as a0 {
  [13, 8, 19, 23, 6, 17, 5, 11]
}

entity "Split 1" as a1 {
  [13, 8, 19, 23] | [6, 17, 5, 11]
}

entity "Split 2 Left" as a2l {
  [13, 8] | [19, 23]
}

entity "Split 2 Right" as a2r {
  [6, 17] | [5, 11]
}

entity "Split 3 Left" as a3l {
  [13] | [8] || [19] | [23]
}

entity "Split 3 Right" as a3r {
  [6] | [17] || [5] | [11]
}

entity "Merge 1 Left" as m1l {
  [8, 13] || [19, 23]
}

entity "Merge 1 Right" as m1r {
  [6, 17] || [5, 11]
}

entity "Merge 2 Left" as m2l {
  [8, 13, 19, 23]
}

entity "Merge 2 Right" as m2r {
  [5, 6, 11, 17]
}

entity "Final Merge" as m3 {
  [5, 6, 8, 11, 13, 17, 19, 23]
}

a0 --> a1
a1 --> a2l
a1 --> a2r
a2l --> a3l
a2r --> a3r
a3l --> m1l
a3r --> m1r
m1l --> m2l
m1r --> m2r
m2l --> m3
m2r --> m3

note right of a0
  Initial unsorted array
end note

note right of m3
  Final sorted array
end note

@enduml

Dick Maley

...