๐Ÿ’ก

What is happening?

Select an algorithm and press Play or Step Forward to begin. Enter your own numbers or use a preset to see the magic!

Quick Sort CLRS Pseudo-code

Procedure QUICKSORT(A, p, r)
1if p < r
2    then q โ† PARTITION(A, p, r)
3         QUICKSORT(A, p, q - 1)
4         QUICKSORT(A, q + 1, r)
            
Procedure PARTITION(A, p, r)
1x โ† A[r]
2i โ† p - 1
3for j โ† p to r - 1
4    do if A[j] โ‰ค x
5        then i โ† i + 1
6             exchange A[i] โ†” A[j]
7exchange A[i + 1] โ†” A[r]
8return i + 1
            

Merge Sort CLRS Pseudo-code

Procedure MERGESORT(A, p, r)
1if p < r
2    then q โ† โŒŠ(p + r) / 2โŒ‹
3         MERGESORT(A, p, q)
4         MERGESORT(A, q + 1, r)
5         MERGE(A, p, q, r)
            
Procedure MERGE(A, p, q, r)
1nโ‚ โ† q - p + 1
2nโ‚‚ โ† r - q
3create arrays L[1..nโ‚ + 1] and R[1..nโ‚‚ + 1]
4for i โ† 1 to nโ‚
5    do L[i] โ† A[p + i - 1]
6for j โ† 1 to nโ‚‚
7    do R[j] โ† A[q + j]
8L[nโ‚ + 1] โ† โˆž
9R[nโ‚‚ + 1] โ† โˆž
10i โ† 1
11j โ† 1
12for k โ† p to r
13    do if L[i] โ‰ค R[j]
14        then A[k] โ† L[i]
15             i โ† i + 1
16        else A[k] โ† R[j]
17             j โ† j + 1
            

Heap Sort CLRS Pseudo-code

Procedure HEAPSORT(A)
1BUILD_HEAP(A)
2for i โ† length[A] down to 2
3    do exchange A[1] โ†” A[i]
4       heap_size[A] โ† heap_size[A] - 1
5       HEAPIFY(A, 1)
            
Procedure BUILD_HEAP(A)
1heap_size[A] โ† length[A]
2for i โ† โŒŠlength[A] / 2โŒ‹ downto 1
3    do HEAPIFY(A, i)
            
Procedure HEAPIFY(A, i)
1l โ† LEFT_CHILD(i)
2r โ† RIGHT_CHILD(i)
3if l โ‰ค heap_size[A] and A[l] > A[i]
4    then largest โ† l
5    else largest โ† i
6if r โ‰ค heap_size[A] and A[r] > A[largest]
7    then largest โ† r
8if largest โ‰  i
9    then exchange A[i] โ†” A[largest]
10         HEAPIFY(A, largest)
            

Variables Tracking

No active variables. Press step to trace.