﻿ Sorting Algorithms | C# Examples - Part 2
03 Jul

Insertion sort is a simple sorting algorithm that builds the final sorted list one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort.

http://en.wikipedia.org/wiki/Insertion_sort

Implementation and Usage:

```            int[] arr = new int
{
1, 5, 4, 11, 20, 8, 2, 98, 90, 16
};

InsertionSort(arr);
Console.WriteLine("Sorted Values:");
for (int i = 0; i < arr.Length; i++)
Console.WriteLine(arr[i]);

//Output:
//Sorted Values:
//1
//2
//4
//5
//8
//11
//16
//20
//90
//98
```
```        private void InsertionSort(int[] arr)
{
int j, temp;
for (int i = 1; i <= arr.Length - 1; i++)
{
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp)
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
```

03 Jul

Selection sort is a sorting algorithm, specifically an in-place comparison sort. It selects the smallest unsorted item remaining in the list. Then swapping it with the item in the next position to be filled.

http://en.wikipedia.org/wiki/Selection_sort

Implementation and Usage:

```            int[] arr = new int
{
1, 5, 4, 11, 20, 8, 2, 98, 90, 16
};

Sort(arr);
Console.WriteLine("Sorted Values:");
for (int i = 0; i < arr.Length; i++)
Console.WriteLine(arr[i]);

//Output:
//Sorted Values:
//1
//2
//4
//5
//8
//11
//16
//20
//90
//98
```
```        private void Sort(int[] arr)
{
int i, j, min;
for (i = 0; i < arr.Length; i++)
{
min = i;
for (j = 0; j < arr.Length; j++)
{
if (arr[j] > arr[min])
{
min = j;
Swap(ref arr[i], ref arr[min]);
}
}
}
}

private void Swap(ref int x, ref int y)
{
int temp = x;
x = y;
y = temp;
}
```