Build the sorted prefix one item at a time, shifting larger values right until the current key can be inserted.

Algorithm

The checked-in replay follows the same small input and final output across all 21 DSA books, so this Lua DSA implementation can be compared directly with the other languages.

Basic Implementation

basic.lua
local arr = {5, 1, 4, 2, 8}
for i = 2, #arr do
	local key = arr[i]
	local j = i - 1
	while j >= 1 and arr[j] > key do
		arr[j + 1] = arr[j]
		j = j - 1
	end
	arr[j + 1] = key
end
io.write("[")
for k = 1, #arr do
	if k > 1 then io.write(", ") end
	io.write(tostring(arr[k]))
end
io.write("]\n")

Complexity

  • Time: O(n^2) worst and average, O(n) best
  • Space: O(1)
  • Stable: yes

Implementation notes

  • Keep the explicit algorithmic steps instead of calling a standard-library sort. The replay is meant to expose comparisons, movement, and recursion.
  • The implementation is intentionally compact for learning and replay, not a production sorting utility.
sorted prefix Positions before the scan index are already sorted.
shifting Larger values move one slot right to make room for the key.