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.