# Counting frequencies of array elements

Given an array which may contain duplicates, print all elements and their frequencies.

Examples:

```Input :  arr[] = {10, 20, 20, 10, 10, 20, 5, 20}
Output : 10 3
20 4
5  1

Input : arr[] = {10, 20, 20}
Output : 10 2
20 1
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A simple solution is to run two loops. For every item count number of times it occurs. To avoid duplicate printing, keep track of processed items.

## C++

 `// CPP program to count frequencies of array items ` `#include ` `using` `namespace` `std; ` ` `  `void` `countFreq(``int` `arr[], ``int` `n) ` `{ ` `    ``// Mark all array elements as not visited ` `    ``vector<``bool``> visited(n, ``false``); ` ` `  `    ``// Traverse through array elements and ` `    ``// count frequencies ` `    ``for` `(``int` `i = 0; i < n; i++) { ` ` `  `        ``// Skip this element if already processed ` `        ``if` `(visited[i] == ``true``) ` `            ``continue``; ` ` `  `        ``// Count frequency ` `        ``int` `count = 1; ` `        ``for` `(``int` `j = i + 1; j < n; j++) { ` `            ``if` `(arr[i] == arr[j]) { ` `                ``visited[j] = ``true``; ` `                ``count++; ` `            ``} ` `        ``} ` `        ``cout << arr[i] << ``" "` `<< count << endl; ` `    ``} ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``countFreq(arr, n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to count frequencies of array items ` `import` `java.util.Arrays; ` ` `  `class` `GFG ` `{ ` `public` `static` `void` `countFreq(``int` `arr[], ``int` `n) ` `{ ` `    ``boolean` `visited[] = ``new` `boolean``[n]; ` `     `  `    ``Arrays.fill(visited, ``false``); ` ` `  `    ``// Traverse through array elements and ` `    ``// count frequencies ` `    ``for` `(``int` `i = ``0``; i < n; i++) { ` ` `  `        ``// Skip this element if already processed ` `        ``if` `(visited[i] == ``true``) ` `            ``continue``; ` ` `  `        ``// Count frequency ` `        ``int` `count = ``1``; ` `        ``for` `(``int` `j = i + ``1``; j < n; j++) { ` `            ``if` `(arr[i] == arr[j]) { ` `                ``visited[j] = ``true``; ` `                ``count++; ` `            ``} ` `        ``} ` `        ``System.out.println(arr[i] + ``" "` `+ count); ` `    ``} ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String []args) ` `{ ` `    ``int` `arr[] = ``new` `int``[]{ ``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20` `}; ` `    ``int` `n = arr.length; ` `    ``countFreq(arr, n); ` `} ` `} ` ` `  `// This code contributed by Adarsh_Verma. `

## Python3

 `# Python 3 program to count frequencies ` `# of array items ` `def` `countFreq(arr, n): ` `     `  `    ``# Mark all array elements as not visited ` `    ``visited ``=` `[``False` `for` `i ``in` `range``(n)] ` ` `  `    ``# Traverse through array elements  ` `    ``# and count frequencies ` `    ``for` `i ``in` `range``(n): ` `         `  `        ``# Skip this element if already  ` `        ``# processed ` `        ``if` `(visited[i] ``=``=` `True``): ` `            ``continue` ` `  `        ``# Count frequency ` `        ``count ``=` `1` `        ``for` `j ``in` `range``(i ``+` `1``, n, ``1``): ` `            ``if` `(arr[i] ``=``=` `arr[j]): ` `                ``visited[j] ``=` `True` `                ``count ``+``=` `1` `         `  `        ``print``(arr[i], count) ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``arr ``=` `[``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20``] ` `    ``n ``=` `len``(arr) ` `    ``countFreq(arr, n) ` `     `  `# This code is contributed by ` `# Shashank_Sharma `

## C#

 `// C# program to count frequencies of array items ` `using` `System; ` ` `  `class` `GFG ` `{ ` `    ``public` `static` `void` `countFreq(``int` `[]arr, ``int` `n) ` `    ``{ ` `        ``bool` `[]visited = ``new` `bool``[n]; ` `     `  `        ``// Traverse through array elements and ` `        ``// count frequencies ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{ ` `     `  `            ``// Skip this element if already processed ` `            ``if` `(visited[i] == ``true``) ` `                ``continue``; ` `     `  `            ``// Count frequency ` `            ``int` `count = 1; ` `            ``for` `(``int` `j = i + 1; j < n; j++)  ` `            ``{ ` `                ``if` `(arr[i] == arr[j])  ` `                ``{ ` `                    ``visited[j] = ``true``; ` `                    ``count++; ` `                ``} ` `            ``} ` `            ``Console.WriteLine(arr[i] + ``" "` `+ count); ` `        ``} ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main(String []args) ` `    ``{ ` `        ``int` `[]arr = ``new` `int``[]{ 10, 20, 20, 10, 10, 20, 5, 20 }; ` `        ``int` `n = arr.Length; ` `        ``countFreq(arr, n); ` `    ``} ` `} ` ` `  `// This code has been contributed by 29AjayKumar `

Output:

```10 3
20 4
5 1
```

Time Complexity : O(n2)
Auxiliary Space : O(n)

An efficient solution is to use hashing.

## C++

 `// CPP program to count frequencies of array items ` `#include ` `using` `namespace` `std; ` ` `  `void` `countFreq(``int` `arr[], ``int` `n) ` `{ ` `    ``unordered_map<``int``, ``int``> mp; ` ` `  `    ``// Traverse through array elements and ` `    ``// count frequencies ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``mp[arr[i]]++; ` ` `  `    ``// Traverse through map and print frequencies ` `    ``for` `(``auto` `x : mp) ` `        ``cout << x.first << ``" "` `<< x.second << endl; ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``countFreq(arr, n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to count frequencies of array items ` `import` `java.util.*; ` ` `  `class` `GFG ` `{ ` ` `  `    ``static` `void` `countFreq(``int` `arr[], ``int` `n) ` `    ``{ ` `        ``Map mp = ``new` `HashMap<>(); ` ` `  `        ``// Traverse through array elements and ` `        ``// count frequencies ` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``{ ` `            ``if` `(mp.containsKey(arr[i]))  ` `            ``{ ` `                ``mp.put(arr[i], mp.get(arr[i]) + ``1``); ` `            ``}  ` `            ``else` `            ``{ ` `                ``mp.put(arr[i], ``1``); ` `            ``} ` `        ``} ` `        ``// Traverse through map and print frequencies ` `        ``for` `(Map.Entry entry : mp.entrySet()) ` `        ``{ ` `            ``System.out.println(entry.getKey() + ``" "` `+ entry.getValue()); ` `        ``} ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String args[])  ` `    ``{ ` `        ``int` `arr[] = {``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20``}; ` `        ``int` `n = arr.length; ` `        ``countFreq(arr, n); ` `    ``} ` `} ` ` `  `// This code contributed by Rajput-Ji `

## Python3

 `# Python3 program to count frequencies  ` `# of array items ` `def` `countFreq(arr, n): ` ` `  `    ``mp ``=` `dict``() ` ` `  `    ``# Traverse through array elements  ` `    ``# and count frequencies ` `    ``for` `i ``in` `range``(n): ` `        ``if` `arr[i] ``in` `mp.keys(): ` `            ``mp[arr[i]] ``+``=` `1` `        ``else``: ` `            ``mp[arr[i]] ``=` `1` `             `  `    ``# Traverse through map and print  ` `    ``# frequencies ` `    ``for` `x ``in` `mp: ` `        ``print``(x, ``" "``, mp[x]) ` ` `  `# Driver code ` `arr ``=` `[``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20` `] ` `n ``=` `len``(arr) ` `countFreq(arr, n) ` ` `  `# This code is contributed by  ` `# Mohit kumar 29 `

## C#

 `// C# implementation of the approach ` `using` `System; ` `using` `System.Collections.Generic;  ` ` `  `class` `GFG ` `{ ` ` `  `    ``static` `void` `countFreq(``int` `[]arr, ``int` `n) ` `    ``{ ` `        ``Dictionary<``int``, ``int``> mp = ``new` `Dictionary<``int``,``int``>(); ` ` `  `        ``// Traverse through array elements and ` `        ``// count frequencies ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{ ` `            ``if` `(mp.ContainsKey(arr[i]))  ` `            ``{ ` `                ``var` `val = mp[arr[i]]; ` `                ``mp.Remove(arr[i]); ` `                ``mp.Add(arr[i], val + 1);  ` `            ``}  ` `            ``else` `            ``{ ` `                ``mp.Add(arr[i], 1); ` `            ``} ` `        ``} ` `         `  `        ``// Traverse through map and print frequencies ` `        ``foreach``(KeyValuePair<``int``, ``int``> entry ``in` `mp) ` `        ``{ ` `            ``Console.WriteLine(entry.Key + ``" "` `+ entry.Value); ` `        ``} ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main(String []args)  ` `    ``{ ` `        ``int` `[]arr = {10, 20, 20, 10, 10, 20, 5, 20}; ` `        ``int` `n = arr.Length; ` `        ``countFreq(arr, n); ` `    ``} ` `} ` ` `  `/* This code contributed by PrinciRaj1992 */`

Output:

```5 1
10 3
20 4
```

Time Complexity : O(n)
Auxiliary Space : O(n)

In above efficient solution, how to print elements in same order as they appear in input?

## C++

 `// CPP program to count frequencies of array items ` `#include ` `using` `namespace` `std; ` ` `  `void` `countFreq(``int` `arr[], ``int` `n) ` `{ ` `    ``unordered_map<``int``, ``int``> mp; ` ` `  `    ``// Traverse through array elements and ` `    ``// count frequencies ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``mp[arr[i]]++; ` ` `  `    ``// To print elements according to first ` `    ``// occurrence, traverse array one more time ` `    ``// print frequencies of elements and mark ` `    ``// frequencies as -1 so that same element ` `    ``// is not printed multiple times. ` `    ``for` `(``int` `i = 0; i < n; i++) { ` `      ``if` `(mp[arr[i]] != -1) ` `      ``{ ` `          ``cout << arr[i] << ``" "` `<< mp[arr[i]] << endl; ` `          ``mp[arr[i]] = -1; ` `      ``} ` `    ``} ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``countFreq(arr, n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to count frequencies of array items  ` `import` `java.util.*; ` ` `  `class` `GFG  ` `{ ` ` `  `    ``static` `void` `countFreq(``int` `arr[], ``int` `n)  ` `    ``{ ` `        ``Map mp = ``new` `HashMap<>(); ` ` `  `        ``// Traverse through array elements and  ` `        ``// count frequencies  ` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``{ ` `            ``mp.put(arr[i], mp.get(arr[i]) == ``null` `? ``1` `: mp.get(arr[i]) + ``1``); ` `        ``} ` ` `  `        ``// To print elements according to first  ` `        ``// occurrence, traverse array one more time  ` `        ``// print frequencies of elements and mark  ` `        ``// frequencies as -1 so that same element  ` `        ``// is not printed multiple times.  ` `        ``for` `(``int` `i = ``0``; i < n; i++)  ` `        ``{ ` `            ``if` `(mp.get(arr[i]) != -``1``)  ` `            ``{ ` `                ``System.out.println(arr[i] + ``" "` `+ mp.get(arr[i])); ` `                ``mp.put(arr[i], -``1``); ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``int` `arr[] = {``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20``}; ` `        ``int` `n = arr.length; ` `        ``countFreq(arr, n); ` `    ``} ` `} ` ` `  `// This code contributed by Rajput-Ji `

## C#

 `// C# program to count frequencies of array items  ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG  ` `{  ` ` `  `    ``static` `void` `countFreq(``int` `[]arr, ``int` `n)  ` `    ``{  ` `        ``Dictionary<``int``,``int``> mp = ``new` `Dictionary<``int``,``int``>();  ` ` `  `        ``// Traverse through array elements and  ` `        ``// count frequencies  ` `         `  `        ``for` `(``int` `i = 0 ; i < n; i++) ` `        ``{ ` `            ``if``(mp.ContainsKey(arr[i])) ` `            ``{ ` `                ``var` `val = mp[arr[i]]; ` `                ``mp.Remove(arr[i]); ` `                ``mp.Add(arr[i], val + 1);  ` `            ``} ` `            ``else` `            ``{ ` `                ``mp.Add(arr[i], 1); ` `            ``} ` `        ``} ` ` `  `        ``// To print elements according to first  ` `        ``// occurrence, traverse array one more time  ` `        ``// print frequencies of elements and mark  ` `        ``// frequencies as -1 so that same element  ` `        ``// is not printed multiple times.  ` `        ``for` `(``int` `i = 0; i < n; i++)  ` `        ``{  ` `            ``if` `(mp.ContainsKey(arr[i]) && mp[arr[i]] != -1)  ` `            ``{  ` `                ``Console.WriteLine(arr[i] + ``" "` `+ mp[arr[i]]);  ` `                ``mp.Remove(arr[i]); ` `                ``mp.Add(arr[i], -1);  ` `            ``}  ` `        ``}  ` `    ``}  ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `Main(String[] args)  ` `    ``{  ` `        ``int` `[]arr = {10, 20, 20, 10, 10, 20, 5, 20};  ` `        ``int` `n = arr.Length;  ` `        ``countFreq(arr, n);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by Princi Singh `

Output:

```10 3
20 4
5 1
```

Time Complexity : O(n)
Auxiliary Space : O(n)

This problem can be solved in Java using Hashmap. Below is the program.

 `// Java prorgam to count frequencies of ` `// integers in array using Hashmap ` `import` `java.io.*; ` `import` `java.util.*; ` `class` `OccurenceOfNumberInArray { ` `    ``static` `void` `frequencyNumber(``int` `arr[], ``int` `size) ` `    ``{ ` `        ``// Creating a HashMap containing integer ` `        ``// as a key and occurrences as a value ` `        ``HashMap freqMap ` `            ``= ``new` `HashMap(); ` ` `  `        ``for` `(``int` `i=``0``;i

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.