Lua Program to Implement Insertion Sort

Lua Program to Implement Insertion Sort

Insertion Sort is a simple and traditional sorting algorithm that feels very natural to understand. It works in the same way you might sort playing cards in your hands. You pick one card at a time and place it in the correct position among the cards you already sorted. Because of this familiar idea, Insertion Sort is often one of the first algorithms beginners learn when studying sorting.

In Lua programming, Insertion Sort is very useful for learning how loops, conditions, and table manipulation work together. While it is not the fastest sorting algorithm for very large data sets, it performs quite well on small or nearly sorted data. You may see similar logic used in simple tools, small games, or learning projects where clarity is more important than raw speed.

Program 1: Basic Insertion Sort Using For Loops

This program shows the most common and beginner-friendly way to implement Insertion Sort in Lua. It uses a simple loop to insert each element into its correct position.

local numbers = {12, 11, 13, 5, 6}

for i = 2, #numbers do

    local key = numbers[i]
    local j = i - 1

    while j > 0 and numbers[j] > key do
        numbers[j + 1] = numbers[j]
        j = j - 1
    end

    numbers[j + 1] = key

end

for i = 1, #numbers do
    print(numbers[i])
end

This code works by taking one value at a time and moving it left until it reaches the right position. Beginners can easily follow this logic because it builds the sorted part step by step. It is a great way to understand how values shift inside a Lua table.

Program 2: Insertion Sort with Clear Separation of Sorted Part

This program focuses on making the idea of a sorted section very clear. After each step, one more element becomes part of the sorted portion.

local numbers = {9, 3, 1, 5, 4}

for i = 2, #numbers do

    local current = numbers[i]
    local position = i

    while position > 1 and numbers[position - 1] > current do
        numbers[position] = numbers[position - 1]
        position = position - 1
    end

    numbers[position] = current

end

for i = 1, #numbers do
    print(numbers[i])
end

This version uses clearer variable names to help beginners understand what is happening. It shows how the sorted section grows from left to right. This makes Insertion Sort easier to visualize and learn.

Program 3: Insertion Sort in Descending Order

Sometimes you want to sort values from largest to smallest. This program shows how Insertion Sort can be adjusted to do that.

local numbers = {2, 7, 4, 1, 5}

for i = 2, #numbers do

    local key = numbers[i]
    local j = i - 1

    while j > 0 and numbers[j] < key do
        numbers[j + 1] = numbers[j]
        j = j - 1
    end

    numbers[j + 1] = key

end

for i = 1, #numbers do
    print(numbers[i])
end

The only difference here is the comparison condition. Beginners can see how a small change in logic leads to a different sorting order. This is useful for ranking scores or arranging values in reverse order.

Program 4: Insertion Sort Using While Loops Only

This program avoids for loops and uses only while loops. It shows that Insertion Sort can be written in different styles.

local numbers = {8, 4, 6, 2, 9}
local i = 2

while i <= #numbers do

    local key = numbers[i]
    local j = i - 1

    while j > 0 and numbers[j] > key do
        numbers[j + 1] = numbers[j]
        j = j - 1
    end

    numbers[j + 1] = key
    i = i + 1

end

for k = 1, #numbers do
    print(numbers[k])
end

This approach helps beginners practice loop control and conditions. It also reinforces the idea that algorithms are about logic, not a specific loop type. Writing the same algorithm in different ways builds confidence.

Program 5: Recursive Insertion Sort in Lua

This program uses recursion instead of loops to perform Insertion Sort. It is more advanced but still valuable for learning.

local numbers = {5, 4, 3, 2, 1}

local function insertionSort(arr, n)

    if n <= 1 then
        return
    end

    insertionSort(arr, n - 1)

    local last = arr[n]
    local j = n - 1

    while j > 0 and arr[j] > last do
        arr[j + 1] = arr[j]
        j = j - 1
    end

    arr[j + 1] = last

end

insertionSort(numbers, #numbers)

for i = 1, #numbers do
    print(numbers[i])
end

This recursive approach sorts the table by fixing one element at a time. Beginners can learn how recursion breaks a problem into smaller parts. It also helps in understanding how function calls work in Lua.

Program 6: Insertion Sort for String Values

Insertion Sort can also be used to sort text data like words. This program sorts strings alphabetically.

local words = {"lua", "python", "c", "java", "ruby"}

for i = 2, #words do

    local key = words[i]
    local j = i - 1

    while j > 0 and words[j] > key do
        words[j + 1] = words[j]
        j = j - 1
    end

    words[j + 1] = key

end

for i = 1, #words do
    print(words[i])
end

Lua can compare strings directly, so no extra logic is needed. This example helps beginners see that Insertion Sort works for different kinds of data, not just numbers.

Program 7: Insertion Sort with Step-by-Step Output

This program prints the table after each insertion step so you can clearly see how the sorting happens.

local numbers = {7, 6, 5, 4, 3}

for i = 2, #numbers do

    local key = numbers[i]
    local j = i - 1

    while j > 0 and numbers[j] > key do
        numbers[j + 1] = numbers[j]
        j = j - 1
    end

    numbers[j + 1] = key

    for k = 1, #numbers do
        io.write(numbers[k] .. " ")
    end

    print()

end

Seeing each step makes learning much easier. Beginners can watch values move into place one by one. This traditional teaching style is very effective for understanding Insertion Sort.

Program 8: Insertion Sort Inside a Reusable Function

This version places the sorting logic inside a function so it can be reused.

local function insertionSort(arr)

    for i = 2, #arr do

        local key = arr[i]
        local j = i - 1

        while j > 0 and arr[j] > key do
            arr[j + 1] = arr[j]
            j = j - 1
        end

        arr[j + 1] = key

    end

end

local numbers = {10, 3, 7, 1, 9}
insertionSort(numbers)

for i = 1, #numbers do
    print(numbers[i])
end

This approach teaches good programming habits. Beginners learn how to separate logic from data and reuse code. This is very important when building real Lua programs.

Program 9: Insertion Sort with Negative and Floating Point Numbers

Insertion Sort naturally supports negative and floating point numbers. This program clearly demonstrates that behavior.

local numbers = {3.5, -2.1, 4.8, 0, -6.3}

for i = 2, #numbers do

    local key = numbers[i]
    local j = i - 1

    while j > 0 and numbers[j] > key do
        numbers[j + 1] = numbers[j]
        j = j - 1
    end

    numbers[j + 1] = key

end

for i = 1, #numbers do
    print(numbers[i])
end

Lua compares numbers naturally, so no changes are required. This reassures beginners that Insertion Sort works with real-world numeric data, including decimals and negative values.

Frequently Asked Questions (FAQ)

This section answers common beginner questions about Insertion Sort in Lua.

Q1. Is Insertion Sort faster than Bubble Sort?
Insertion Sort is usually faster than Bubble Sort, especially when the data is already partially sorted.

Q2. When should I use Insertion Sort in Lua?
Insertion Sort is best for small data sets or nearly sorted tables where simplicity matters.

Q3. Does Lua have a built-in sort function?
Yes, Lua provides table.sort, but writing Insertion Sort helps you understand sorting logic better.

Q4. Can Insertion Sort handle duplicate values?
Yes, duplicate values are handled correctly and stay in proper order.

Conclusion

Insertion Sort is a simple, clear, and beginner-friendly sorting algorithm that is perfect for learning Lua. In this article, you explored many Lua programs that implement Insertion Sort using loops, recursion, functions, and different data types. You also saw how it works with numbers, strings, negative values, and floating point numbers.

The best way to truly understand Insertion Sort is to practice it yourself. Try changing the data, sorting in reverse order, or adding print statements to observe each step. With regular practice, your confidence in Lua programming and algorithm thinking will grow steadily.

Scroll to Top