Insertion Sort is a sorting algorithm that takes an element at a time and inserts it in its correct position in the array. This process is continued until the array is sorted.
A program that demonstrates insertion sort in C# is given as follows.
Example
Live Demo
using System;
namespace InsertionSortDemo {
class Example {
static void Main(string[] args) {
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j >= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
}
else flag = 1;
}
}
Console.Write("\nSorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
}
}
}
The output of the above program is as follows.
Insertion Sort
Initial array is: 23 9 85 12 99 34 60 15 100 1
Sorted Array is: 1 9 12 15 23 34 60 85 99 100
Now, let us understand the above program.
First the array is initialized and its value is printed using a for loop. This can be seen in the following code snippet −
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
A nested for loop is used for the actual sorting process. In each pass of the outer for loop, the current element is inserted into its correct position in the array. This process continues until the array is sorted. This can be seen in the following code snippet.
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j >= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
} else flag = 1;
}
}
Finally, the sorted array is displayed. This can be seen in the following code snippet.
Console.Write("\nSorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}