Skip to content

Commit 8c150d7

Browse files
Create Counting_Sort.cpp
1 parent c23ebe7 commit 8c150d7

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

sorting/Counting_Sort.cpp

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int Max(int Arr[], int N)
5+
{
6+
int max = Arr[0];
7+
for (int i = 1; i < N; i++)
8+
if (Arr[i] > max)
9+
max = Arr[i];
10+
return max;
11+
}
12+
13+
int Min(int Arr[], int N)
14+
{
15+
int min = Arr[0];
16+
for (int i = 1; i < N; i++)
17+
if (Arr[i] < min)
18+
min = Arr[i];
19+
return min;
20+
}
21+
22+
void Print(int Arr[], int N)
23+
{
24+
for (int i = 0; i < N; i++)
25+
cout << Arr[i] << ", ";
26+
}
27+
28+
int *Counting_Sort(int Arr[], int N)
29+
{
30+
31+
int max = Max(Arr, N);
32+
int min = Min(Arr, N);
33+
int *Sorted_Arr = new int[N];
34+
35+
int *Count = new int[max - min + 1];
36+
37+
for (int i = 0; i < N; i++)
38+
Count[Arr[i] - min]++;
39+
40+
for (int i = 1; i < (max - min + 1); i++)
41+
Count[i] += Count[i - 1];
42+
43+
for (int i = N - 1; i >= 0; i--)
44+
{
45+
Sorted_Arr[Count[Arr[i] - min] - 1] = Arr[i];
46+
Count[Arr[i] - min]--;
47+
}
48+
49+
return Sorted_Arr;
50+
}
51+
52+
int main()
53+
{
54+
55+
int Arr[] = {47, 65, 20, 66, 25, 53, 64, 69, 72, 22, 74, 25, 53, 15, 42, 36, 4, 69, 86, 19}, N = 20;
56+
int *Sorted_Arr;
57+
58+
cout << "\n\tOrignal Array = ";
59+
Print(Arr, N);
60+
Sorted_Arr = Counting_Sort(Arr, N);
61+
cout << "\n\t Sorted Array = ";
62+
Print(Sorted_Arr, N);
63+
cout << endl;
64+
65+
return 0;
66+
}

0 commit comments

Comments
 (0)