Skip to content

Algorithms Code Practice Exam

Test yourself under real exam conditions: 50 timed questions, 60 on the clock, pass mark 70%%. Instant score with a full review of everything you got wrong. Free — no account needed.

📝 50 questions · ⏱ 60 minutes · 🎯 Pass mark 70% · 🆓 Free, no signup

Exam details

  • 50 questions drawn from 422 cards
  • Countdown timer — auto-submits when time runs out
  • Pass mark 70% (real certification threshold)
  • Full review of wrong answers at the end
  • No signup required — save your score with a free account

Sample Questions

5 shown

What is Binary Search and what is its time complexity?

Write the implementation in Python.

Show ▼

Binary Search finds a target in a sorted array by repeatedly halving the search space.

Time: O(log n)  |  Space: O(1)

def binary_search(arr, target):
lo, hi = 0, len(arr) - 1
while lo <= hi:
mid = (lo + hi) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
lo = mid + 1
else:
hi = mid - 1
return -1

What is Bubble Sort and what is its time complexity?

Write the implementation in Python.

Show ▼

Bubble Sort repeatedly swaps adjacent elements if they are in the wrong order.

Time: O(n²)  |  Space: O(1)

def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break
return arr

What is Merge Sort and what is its time complexity?

Write the implementation in Python.

Show ▼

Merge Sort is a divide-and-conquer algorithm that splits the array in half, recursively sorts each half, then merges them.

Time: O(n log n)  |  Space: O(n)

def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)

def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i]); i += 1
else:
result.append(right[j]); j += 1
result.extend(left[i:])
result.extend(right[j:])
return result

What is Quick Sort and what is its time complexity?

Write the implementation in Python.

Show ▼

Quick Sort picks a pivot, partitions elements around it, then recursively sorts each partition.

Time: O(n log n) avg, O(n²) worst  |  Space: O(log n)

def quick_sort(arr, lo=0, hi=None):
if hi is None:
hi = len(arr) - 1
if lo < hi:
pivot_idx = partition(arr, lo, hi)
quick_sort(arr, lo, pivot_idx - 1)
quick_sort(arr, pivot_idx + 1, hi)

def partition(arr, lo, hi):
pivot = arr[hi]
i = lo - 1
for j in range(lo, hi):
if arr[j] <= pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i + 1], arr[hi] = arr[hi], arr[i + 1]
return i + 1

What is BFS (Breadth-First Search) and what is its time complexity?

Write the implementation in Python.

Show ▼

BFS explores a graph level by level using a queue. Used for shortest path in unweighted graphs.

Time: O(V + E)  |  Space: O(V)

from collections import deque

def bfs(graph, start):
visited = set([start])
queue = deque([start])
result = []
while queue:
node = queue.popleft()
result.append(node)
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
return result

🎯 Take the Algorithms Code Practice Exam