Related Articles

# Counting frequencies of array elements

• Difficulty Level : Easy
• Last Updated : 07 Aug, 2021

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 1
20 2 ```

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`

## Javascript

 ``
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 */`

## Javascript

 ``
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`

## Python3

 `# Python3 program to count frequencies of array items``def` `countFreq(arr, n):``    ` `    ``mp ``=` `{}``    ` `    ``# Traverse through array elements and``    ``# count frequencies``    ``for` `i ``in` `range``(n):``        ``if` `arr[i] ``not` `in` `mp:``            ``mp[arr[i]] ``=` `0``        ``mp[arr[i]] ``+``=` `1``        ` `    ``# To prelements according to first``    ``# occurrence, traverse array one more time``    ``# prfrequencies of elements and mark``    ``# frequencies as -1 so that same element``    ``# is not printed multiple times.``    ``for` `i ``in` `range``(n):``        ``if` `(mp[arr[i]] !``=` `-``1``):``            ``print``(arr[i],mp[arr[i]])``        ``mp[arr[i]] ``=` `-``1` `# Driver code` `arr ``=` `[``10``, ``20``, ``20``, ``10``, ``10``, ``20``, ``5``, ``20``]``n ``=` `len``(arr)``countFreq(arr, n)` `# This code is contributed by shubhamsingh10`

## 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`

## Javascript

 ``
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

 `// Java program 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

## Javascript

 ``

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up