flowchart TD
A[Choose pivot] --> B[Partition array]
B --> C[Left pivot]
B --> D[Equal pivot]
B --> E[Right pivot]
C --> F{size 1}
E --> G{size 1}
F -- Yes --> H[QuickSort left]
G -- Yes --> I[QuickSort right]
F -- No --> J[Keep left]
G -- No --> K[Keep right]
H --> L[Concatenate left mid right]
I --> L
J --> L
K --> L
sequenceDiagram
participant Q as QuickSort
participant P as Pivot
participant A as Array
Q->>P: pick pivot
Q->>A: partition around pivot
Q->>Q: recurse left
Q->>Q: recurse right
Q-->>A: merged order