# Sorting an Array in Bash using Insertion Sort

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 9Explanation:The array in sorted order is {2, 5, 7, 9}

Input:arr[] = {3, 2, 1}Output:1 2 3Explanation: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