public static void Main()
int[] arr = new int[10]{1, 5, 4, 11, 20, 8, 2, 98, 90, 16};
int[] sortedArray = CountingSort(arr);
Console.WriteLine("Sorted Values:");
for (int i = 0; i < sortedArray.Length; i++)
Console.WriteLine(sortedArray[i]);
public static int[] CountingSort(int[] array)
int[] sortedArray = new int[array.Length];
for (int i = 1; i < array.Length; i++)
else if (array[i] > maxVal)
int[] counts = new int[maxVal - minVal + 1];
for (int i = 0; i < array.Length; i++)
counts[array[i] - minVal]++;
for (int i = 1; i < counts.Length; i++)
counts[i] = counts[i] + counts[i - 1];
for (int i = array.Length - 1; i >= 0; i--)
sortedArray[counts[array[i] - minVal]--] = array[i];