Consider the following quicksort sorting algorithm:

**QUICKSORT(A, p, r)**

**if p < r**

**then q ← PARTITION(A, p, r)**

**QUICKSORT(A, p, q − 1) **

QUICKSORT(A, q + 1, r)

**where the PARTITION procedure is as follows:**

PARTITION(A, p, r)

**x ← A[r] **

i ← p − 1

for j ← p to r − 1

**do if A[j] ≤ x**

**then i ← i + 1**

**exchange A[i] ↔ A[j]**

**exchange A[i + 1] ↔ A[r]**

return i + 1

- Draw the flowchart of the above algorithm.
- Draw the corresponding graph and label the nodes as n1, n2, … and edges as e1, e2, …
- Calculate the cyclomatic complexity of the above algorithm