Open In App

Sorting an Array in Bash using Insertion Sort

Last Updated : 20 Jul, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Given an array, arr[] of size N, the task is to sort the array in ascending order using Insertion Sort in bash scripting.

Examples:

Input: arr[] = {9, 7, 2, 5}
Output: 2 5 7 9
Explanation: The array in sorted order is {2, 5, 7, 9} 

Input: arr[] = {3, 2, 1}
Output: 1 2 3
Explanation: The array in sorted order is {1, 2, 3} 

Approach: Follow the steps below to solve the problem: 

  • Traverse the given array, arr[] in the range [1, N] and perform the following steps: 
    • Compare the current element (key) to its predecessor. 
    • If the key element is smaller than its predecessor, compare it to the elements before. Move the greater elements one position up to make space for the swapped element.
  • After completing the above steps, print the sorted array.

Below is the implementation of the above approach:

# Bash program for the above approach
n = 4
arr = (9 7 2 5)

# Perform insertion sort to sort the array
j = 1
while [ $j -lt $n ] 
do
    c = 0
    k = $(expr $j - 1)
    while [ $k -ge 0 ] 
    do
        if [ ${arr[k]} -gt ${arr[j]} ] 
        then
            c=$(expr $c + 1)
        fi
    k = $(expr $k - 1)
    done
    
    x = $j
    y = $(expr $j - 1)
    
    while [ $c -gt 0 ]
    do
        # Swapping the elements
        temp=${arr[x]}
        arr[$x]=${arr[y]}
        arr[$y]=$temp
        
        x=$(expr $x - 1)
        y=$(expr $y - 1)
        c=$(expr $c - 1)
        
    done
    
    j = $(expr $j + 1)
done

# Print the sorted array
echo "${arr[*]}"

Output:

2 5 7 9


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads