Skip to content

Commit 4cec987

Browse files
DimaMukhinsinghpratyush
authored andcommitted
Fix #611: Add Counting Sort [C#] (#612)
* Implemented Trie C# * Added check mark under Trie c# * Fixed syntax * Implemented Counting Sort [C#] * Added counting sort to readme * Update README.md * Code refactoring based on PR feedback * Fixed Travis indent size error
1 parent 63ac50b commit 4cec987

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Community (college) maintained list of Algorithms and Data Structures implementa
2222
| [Binary Search](https://en.wikipedia.org/wiki/Binary_search_algorithm) | [:white_check_mark:](binary_search/binary_search.c) | | [:white_check_mark:](binary_search/BinarySearch.java) | [:white_check_mark:](binary_search/binary_search.py) | [:white_check_mark:](binary_search/binary_search.go) | [:white_check_mark:](binary_search/binarySearch.js) | [:white_check_mark:](binary_search/BinarySearch.cs) |
2323
| [Breadth First Search](https://en.wikipedia.org/wiki/Breadth-first_search) | | | [:white_check_mark:](breadth_first_search/BreadthFirstSearch.java) | | | | |
2424
| [Coin Change Problem](http://www.algorithmist.com/index.php/Coin_Change) | [:white_check_mark:](coin_change_problem/coin_change_problem.c) | | [:white_check_mark:](coin_change_problem/CoinChangeProblem.java) | [:white_check_mark:](coin_change_problem/coin_change_problem.py) | [:white_check_mark:](coin_change_problem/coin_change_problem.go) | [:white_check_mark:](coin_change_problem/coinChangeProblem.js) | |
25-
| [Counting Sort](http://www.geeksforgeeks.org/counting-sort/)| [:white_check_mark:](counting_sort/counting_sort.c) | | [:white_check_mark:](counting_sort/CountingSort.java) | [:white_check_mark:](counting_sort/counting_sort.py) | [:white_check_mark:](counting_sort/counting_sort.go) | [:white_check_mark:](counting_sort/countingSort.js) | |
25+
| [Counting Sort](http://www.geeksforgeeks.org/counting-sort/)| [:white_check_mark:](counting_sort/counting_sort.c) | | [:white_check_mark:](counting_sort/CountingSort.java) | [:white_check_mark:](counting_sort/counting_sort.py) | [:white_check_mark:](counting_sort/counting_sort.go) | [:white_check_mark:](counting_sort/countingSort.js) | [:white_check_mark:](counting_sort/CountingSort.cs) |
2626
| [Depth First Traversal](http://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/) | | | [:white_check_mark:](depth_first_traversal/DepthFirstTraversal.java) | [:white_check_mark:](depth_first_traversal/DepthFirstTraversal.py) | | | |
2727
| [Dijkstra Algorithm](https://en.wikipedia.org/wiki/Dijkstra's_algorithm) | [:white_check_mark:](dijkstra/dijkstra.c) | | [:white_check_mark:](dijkstra/Dijkstra.java) | [:white_check_mark:](dijkstra/dijkstra.py) | | | |
2828
| [Euclidean GCD](https://en.wikipedia.org/wiki/Euclidean_algorithm) | [:white_check_mark:](euclidean_gcd/euclidean_gcd.c) | | [:white_check_mark:](euclidean_gcd/EuclideanGCD.java) | [:white_check_mark:](euclidean_gcd/euclidean_gcd.py) | [:white_check_mark:](euclidean_gcd/euclidean_gcd.go) | [:white_check_mark:](euclidean_gcd/euclideanGCD.js) | [:white_check_mark:](euclidean_gcd/EuclideanGCD.cs) |
@@ -63,7 +63,6 @@ Community (college) maintained list of Algorithms and Data Structures implementa
6363

6464

6565

66-
6766
## How to run them
6867

6968
| Language | Steps |

counting_sort/CountingSort.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
3+
public class CountingSort
4+
{
5+
6+
/**
7+
* Sorts the array using counting sort
8+
* Time Complexity: O(n + k) where n is the number of elements in the array and k is the range of input
9+
* Space Complexity: O(n + k)
10+
*/
11+
public static int[] DoCountingSort(int[] arr)
12+
{
13+
// finding the maximum value in the array
14+
int maxValue = Int32.MinValue;
15+
foreach (int num in arr)
16+
maxValue = Math.Max(maxValue, num);
17+
18+
// counting the frequency of each element in the array
19+
int[] frequency = new int[maxValue + 1];
20+
foreach (int num in arr)
21+
frequency[num]++;
22+
23+
// modifying each element in the frequency array to the total of all the elements before it
24+
for (int i = 1; i < frequency.Length; i++)
25+
frequency[i] += frequency[i - 1];
26+
27+
// constructing the sorted array based on the freqency of each element in ascending order
28+
int[] sortedArr = new int[arr.Length];
29+
for (int i = 0; i < arr.Length; i++) {
30+
sortedArr[frequency[arr[i]] - 1] = arr[i];
31+
frequency[arr[i]]--;
32+
}
33+
return sortedArr;
34+
}
35+
36+
public static void Main()
37+
{
38+
int[] arr = new int[] {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
39+
int[] sortedArr = DoCountingSort(arr);
40+
foreach (int num in sortedArr)
41+
Console.WriteLine(num);
42+
}
43+
}

0 commit comments

Comments
 (0)