# Count number of occurrences (or frequency) in a sorted array

• Difficulty Level : Medium
• Last Updated : 11 Aug, 2022

Given a sorted array arr[] and a number x, write a function that counts the occurrences of x in arr[]. Expected time complexity is O(Logn)

Examples:

```  Input: arr[] = {1, 1, 2, 2, 2, 2, 3,},   x = 2
Output: 4 // x (or 2) occurs 4 times in arr[]

Input: arr[] = {1, 1, 2, 2, 2, 2, 3,},   x = 3
Output: 1

Input: arr[] = {1, 1, 2, 2, 2, 2, 3,},   x = 1
Output: 2

Input: arr[] = {1, 1, 2, 2, 2, 2, 3,},   x = 4
Output: -1 // 4 doesn't occur in arr[] ```
Recommended Practice

Method 1 (Linear Search)
Linearly search for x, count the occurrences of x and return the count.

## C++

 `// C++ program to count occurrences of an element``#include``using` `namespace` `std;` `// Returns number of times x occurs in arr[0..n-1]``int` `countOccurrences(``int` `arr[], ``int` `n, ``int` `x)``{``    ``int` `res = 0;``    ``for` `(``int` `i=0; i

## Java

 `// Java program to count occurrences``// of an element` `class` `Main``{``    ``// Returns number of times x occurs in arr[0..n-1]``    ``static` `int` `countOccurrences(``int` `arr[], ``int` `n, ``int` `x)``    ``{``        ``int` `res = ``0``;``        ``for` `(``int` `i=``0``; i

## Python3

 `# Python3 program to count``# occurrences of an element` `# Returns number of times x``# occurs in arr[0..n-1]``def` `countOccurrences(arr, n, x):``    ``res ``=` `0``    ``for` `i ``in` `range``(n):``        ``if` `x ``=``=` `arr[i]:``            ``res ``+``=` `1``    ``return` `res`` ` `# Driver code``arr ``=` `[``1``, ``2``, ``2``, ``2``, ``2``, ``3``, ``4``, ``7` `,``8` `,``8``]``n ``=` `len``(arr)``x ``=` `2``print` `(countOccurrences(arr, n, x))`

## C#

 `// C# program to count occurrences``// of an element``using` `System;` `class` `GFG``{``    ``// Returns number of times x``    ``// occurs in arr[0..n-1]``    ``static` `int` `countOccurrences(``int` `[]arr,``                                ``int` `n, ``int` `x)``    ``{``        ``int` `res = 0;``        ` `        ``for` `(``int` `i = 0; i < n; i++)``            ``if` `(x == arr[i])``            ``res++;``            ` `        ``return` `res;``    ``}``    ` `    ``// driver code   ``    ``public` `static` `void` `Main()``    ``{``        ``int` `[]arr = {1, 2, 2, 2, 2, 3, 4, 7 ,8 ,8 };``        ``int` `n = arr.Length;``        ``int` `x = 2;``        ` `        ``Console.Write(countOccurrences(arr, n, x));``    ``}``}` `// This code is contributed by Sam007`

## PHP

 ``

## Javascript

 ``

Output :

`4`

Time Complexity: O(n)

Space Complexity: O(1), as no extra space is used

Method 2 (Better using Binary Search)
We first find an occurrence using binary search. Then we match toward left and right sides of the matched the found index.

## C++

 `// C++ program to count occurrences of an element``#include ``using` `namespace` `std;` `// A recursive binary search function. It returns``// location of x in given array arr[l..r] is present,``// otherwise -1``int` `binarySearch(``int` `arr[], ``int` `l, ``int` `r, ``int` `x)``{``    ``if` `(r < l)``        ``return` `-1;` `    ``int` `mid = l + (r - l) / 2;` `    ``// If the element is present at the middle``    ``// itself``    ``if` `(arr[mid] == x)``        ``return` `mid;` `    ``// If element is smaller than mid, then``    ``// it can only be present in left subarray``    ``if` `(arr[mid] > x)``        ``return` `binarySearch(arr, l, mid - 1, x);` `    ``// Else the element can only be present``    ``// in right subarray``    ``return` `binarySearch(arr, mid + 1, r, x);``}` `// Returns number of times x occurs in arr[0..n-1]``int` `countOccurrences(``int` `arr[], ``int` `n, ``int` `x)``{``    ``int` `ind = binarySearch(arr, 0, n - 1, x);` `    ``// If element is not present``    ``if` `(ind == -1)``        ``return` `0;` `    ``// Count elements on left side.``    ``int` `count = 1;``    ``int` `left = ind - 1;``    ``while` `(left >= 0 && arr[left] == x)``        ``count++, left--;` `    ``// Count elements on right side.``    ``int` `right = ind + 1;``    ``while` `(right < n && arr[right] == x)``        ``count++, right++;` `    ``return` `count;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 1, 2, 2, 2, 2, 3, 4, 7, 8, 8 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``int` `x = 2;``    ``cout << countOccurrences(arr, n, x);``    ``return` `0;``}`

## Java

 `// Java program to count``// occurrences of an element``class` `GFG``{` `    ``// A recursive binary search``    ``// function. It returns location``    ``// of x in given array arr[l..r]``    ``// is present, otherwise -1``    ``static` `int` `binarySearch(``int` `arr[], ``int` `l,``                            ``int` `r, ``int` `x)``    ``{``        ``if` `(r < l)``            ``return` `-``1``;` `        ``int` `mid = l + (r - l) / ``2``;` `        ``// If the element is present``        ``// at the middle itself``        ``if` `(arr[mid] == x)``            ``return` `mid;` `        ``// If element is smaller than``        ``// mid, then it can only be``        ``// present in left subarray``        ``if` `(arr[mid] > x)``            ``return` `binarySearch(arr, l,``                                ``mid - ``1``, x);` `        ``// Else the element can``        ``// only be present in``        ``// right subarray``        ``return` `binarySearch(arr, mid + ``1``, r, x);``    ``}` `    ``// Returns number of times x``    ``// occurs in arr[0..n-1]``    ``static` `int` `countOccurrences(``int` `arr[],``                                ``int` `n, ``int` `x)``    ``{``        ``int` `ind = binarySearch(arr, ``0``,``                               ``n - ``1``, x);` `        ``// If element is not present``        ``if` `(ind == -``1``)``            ``return` `0``;` `        ``// Count elements on left side.``        ``int` `count = ``1``;``        ``int` `left = ind - ``1``;``        ``while` `(left >= ``0` `&&``               ``arr[left] == x)``        ``{``            ``count++;``            ``left--;``        ``}` `        ``// Count elements``        ``// on right side.``        ``int` `right = ind + ``1``;``        ``while` `(right < n &&``               ``arr[right] == x)``        ``{``            ``count++;``            ``right++;``        ``}` `        ``return` `count;``    ``}`  `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `arr[] = {``1``, ``2``, ``2``, ``2``, ``2``,``                     ``3``, ``4``, ``7``, ``8``, ``8``};``        ``int` `n = arr.length;``        ``int` `x = ``2``;``        ``System.out.print(countOccurrences(arr, n, x));``    ``}``}` `// This code is contributed``// by ChitraNayal`

## Python 3

 `# Python 3 program to count``# occurrences of an element` `# A recursive binary search``# function. It returns location``# of x in given array arr[l..r]``# is present, otherwise -1``def` `binarySearch(arr, l, r, x):``    ``if` `(r < l):``        ``return` `-``1` `    ``mid ``=` `int``( l ``+` `(r ``-` `l) ``/` `2``)` `    ``# If the element is present``    ``# at the middle itself``    ``if` `arr[mid] ``=``=` `x:``        ``return` `mid` `    ``# If element is smaller than``    ``# mid, then it can only be``    ``# present in left subarray``    ``if` `arr[mid] > x:``        ``return` `binarySearch(arr, l,``                            ``mid ``-` `1``, x)` `    ``# Else the element``    ``# can only be present``    ``# in right subarray``    ``return` `binarySearch(arr, mid ``+` `1``,``                                ``r, x)` `# Returns number of times``# x occurs in arr[0..n-1]``def` `countOccurrences(arr, n, x):``    ``ind ``=` `binarySearch(arr, ``0``, n ``-` `1``, x)` `    ``# If element is not present``    ``if` `ind ``=``=` `-``1``:``        ``return` `0` `    ``# Count elements``    ``# on left side.``    ``count ``=` `1``    ``left ``=` `ind ``-` `1``    ``while` `(left >``=` `0` `and``           ``arr[left] ``=``=` `x):``        ``count ``+``=` `1``        ``left ``-``=` `1` `    ``# Count elements on``    ``# right side.``    ``right ``=` `ind ``+` `1``;``    ``while` `(right < n ``and``           ``arr[right] ``=``=` `x):``        ``count ``+``=` `1``        ``right ``+``=` `1` `    ``return` `count` `# Driver code``arr ``=` `[ ``1``, ``2``, ``2``, ``2``, ``2``,``        ``3``, ``4``, ``7``, ``8``, ``8` `]``n ``=` `len``(arr)``x ``=` `2``print``(countOccurrences(arr, n, x))` `# This code is contributed``# by ChitraNayal`

## C#

 `// C# program to count``// occurrences of an element``using` `System;` `class` `GFG``{` `    ``// A recursive binary search``    ``// function. It returns location``    ``// of x in given array arr[l..r]``    ``// is present, otherwise -1``    ``static` `int` `binarySearch(``int``[] arr, ``int` `l,``                            ``int` `r, ``int` `x)``    ``{``        ``if` `(r < l)``            ``return` `-1;` `        ``int` `mid = l + (r - l) / 2;` `        ``// If the element is present``        ``// at the middle itself``        ``if` `(arr[mid] == x)``            ``return` `mid;` `        ``// If element is smaller than``        ``// mid, then it can only be``        ``// present in left subarray``        ``if` `(arr[mid] > x)``            ``return` `binarySearch(arr, l,``                                ``mid - 1, x);` `        ``// Else the element``        ``// can only be present``        ``// in right subarray``        ``return` `binarySearch(arr, mid + 1,``                                   ``r, x);``    ``}` `    ``// Returns number of times x``    ``// occurs in arr[0..n-1]``    ``static` `int` `countOccurrences(``int``[] arr,``                                ``int` `n, ``int` `x)``    ``{``        ``int` `ind = binarySearch(arr, 0,``                               ``n - 1, x);` `        ``// If element is not present``        ``if` `(ind == -1)``            ``return` `0;` `        ``// Count elements on left side.``        ``int` `count = 1;``        ``int` `left = ind - 1;``        ``while` `(left >= 0 &&``               ``arr[left] == x)``        ``{``            ``count++;``            ``left--;``        ``}` `        ``// Count elements on right side.``        ``int` `right = ind + 1;``        ``while` `(right < n &&``               ``arr[right] == x)``        ``{``            ``count++;``            ``right++;``        ``}` `        ``return` `count;``    ``}`  `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr = {1, 2, 2, 2, 2,``                     ``3, 4, 7, 8, 8};``        ``int` `n = arr.Length;``        ``int` `x = 2;``        ``Console.Write(countOccurrences(arr, n, x));``    ``}``}` `// This code is contributed``// by ChitraNayal`

## PHP

 ` ``\$x``)``        ``return` `binarySearch(``\$arr``, ``\$l``,  ``                            ``\$mid` `- 1, ``\$x``);` `    ``// Else the element``    ``// can only be present``    ``// in right subarray``    ``return` `binarySearch(``\$arr``, ``\$mid` `+ 1,``                                ``\$r``, ``\$x``);``}` `// Returns number of times``// x occurs in arr[0..n-1]``function` `countOccurrences(``\$arr``, ``\$n``, ``\$x``)``{``    ``\$ind` `= binarySearch(``\$arr``, 0,``                        ``\$n` `- 1, ``\$x``);` `    ``// If element is not present``    ``if` `(``\$ind` `== -1)``        ``return` `0;` `    ``// Count elements``    ``// on left side.``    ``\$count` `= 1;``    ``\$left` `= ``\$ind` `- 1;``    ``while` `(``\$left` `>= 0 &&``           ``\$arr``[``\$left``] == ``\$x``)``    ``{``        ``\$count``++;``        ``\$left``--;``    ``}``    ` `    ``// Count elements on right side.``    ``\$right` `= ``\$ind` `+ 1;``    ``while` `(``\$right` `< ``\$n` `&&``           ``\$arr``[``\$right``] == ``\$x``)``    ``{``        ``\$count``++;``        ``\$right``++;``    ``}``    ``return` `\$count``;``}` `// Driver code``\$arr` `= ``array``( 1, 2, 2, 2, 2,``              ``3, 4, 7, 8, 8 );``\$n` `= sizeof(``\$arr``);``\$x` `= 2;``echo` `countOccurrences(``\$arr``, ``\$n``, ``\$x``);` `// This code is contributed``// by ChitraNayal``?>`

## Javascript

 ``

Output :

`4`

Time Complexity : O(Log n + count) where count is number of occurrences.

Space Complexity: O(logn), due to recursive stack space

Method 3 (Best using Improved Binary Search)
1) Use Binary search to get index of the first occurrence of x in arr[]. Let the index of the first occurrence be i.
2) Use Binary search to get index of the last occurrence of x in arr[]. Let the index of the last occurrence be j.
3) Return (j – i + 1);

## C++

 `// C++ program to count occurrences of an element``// in a sorted array.``# include ``using` `namespace` `std;` `/* if x is present in arr[] then returns the count``    ``of occurrences of x, otherwise returns 0. */``int` `count(``int` `arr[], ``int` `x, ``int` `n)``{   ``  ``/* get the index of first occurrence of x */``  ``int` `*low = lower_bound(arr, arr+n, x);` `  ``// If element is not present, return 0``  ``if` `(low == (arr + n) || *low != x)``     ``return` `0;``   ` `  ``/* Else get the index of last occurrence of x.``     ``Note that we  are only looking in the``     ``subarray after first occurrence */`  `  ``int` `*high = upper_bound(low, arr+n, x);    ``   ` `  ``/* return count */``  ``return` `high - low;``}` `/* driver program to test above functions */``int` `main()``{``  ``int` `arr[] = {1, 2, 2, 3, 3, 3, 3};``  ``int` `x =  3;  ``// Element to be counted in arr[]``  ``int` `n = ``sizeof``(arr)/``sizeof``(arr[0]);``  ``int` `c = count(arr, x, n);``  ``printf``(``" %d occurs %d times "``, x, c);``  ``return` `0;``}`

## C

 `# include ` `/* if x is present in arr[] then returns``   ``the index of FIRST occurrence``   ``of x in arr[0..n-1], otherwise returns -1 */``int` `first(``int` `arr[], ``int` `low, ``int` `high, ``int` `x, ``int` `n)``{``  ``if``(high >= low)``  ``{``    ``int` `mid = (low + high)/2;  ``/*low + (high - low)/2;*/``    ``if``( ( mid == 0 || x > arr[mid-1]) && arr[mid] == x)``      ``return` `mid;``    ``else` `if``(x > arr[mid])``      ``return` `first(arr, (mid + 1), high, x, n);``    ``else``      ``return` `first(arr, low, (mid -1), x, n);``  ``}``  ``return` `-1;``}` `/* if x is present in arr[] then returns the``   ``index of LAST occurrence of x in arr[0..n-1],``   ``otherwise returns -1 */``int` `last(``int` `arr[], ``int` `low, ``int` `high, ``int` `x, ``int` `n)``{``  ``if` `(high >= low)``  ``{``    ``int` `mid = (low + high)/2;  ``/*low + (high - low)/2;*/``    ``if``( ( mid == n-1 || x < arr[mid+1]) && arr[mid] == x )``      ``return` `mid;``    ``else` `if``(x < arr[mid])``      ``return` `last(arr, low, (mid -1), x, n);``    ``else``      ``return` `last(arr, (mid + 1), high, x, n);     ``  ``}``  ``return` `-1;``}` `/* if x is present in arr[] then returns the count``   ``of occurrences of x, otherwise returns -1. */``int` `count(``int` `arr[], ``int` `x, ``int` `n)``{``  ``int` `i; ``// index of first occurrence of x in arr[0..n-1]``  ``int` `j; ``// index of last occurrence of x in arr[0..n-1]``    ` `  ``/* get the index of first occurrence of x */``  ``i = first(arr, 0, n-1, x, n);` `  ``/* If x doesn't exist in arr[] then return -1 */``  ``if``(i == -1)``    ``return` `i;``   ` `  ``/* Else get the index of last occurrence of x.``     ``Note that we are only looking in the subarray``     ``after first occurrence */`  `  ``j = last(arr, i, n-1, x, n);    ``   ` `  ``/* return count */``  ``return` `j-i+1;``}` `/* driver program to test above functions */``int` `main()``{``  ``int` `arr[] = {1, 2, 2, 3, 3, 3, 3};``  ``int` `x =  3;  ``// Element to be counted in arr[]``  ``int` `n = ``sizeof``(arr)/``sizeof``(arr[0]);``  ``int` `c = count(arr, x, n);``  ``printf``(``" %d occurs %d times "``, x, c);``  ``getchar``();``  ``return` `0;``}`

## Java

 `// Java program to count occurrences``// of an element` `class` `Main``{``    ``/* if x is present in arr[] then returns``       ``the count of occurrences of x,``       ``otherwise returns -1. */``    ``static` `int` `count(``int` `arr[], ``int` `x, ``int` `n)``    ``{``      ``// index of first occurrence of x in arr[0..n-1]   ``      ``int` `i;``      ` `      ``// index of last occurrence of x in arr[0..n-1]``      ``int` `j;``         ` `      ``/* get the index of first occurrence of x */``      ``i = first(arr, ``0``, n-``1``, x, n);``     ` `      ``/* If x doesn't exist in arr[] then return -1 */``      ``if``(i == -``1``)``        ``return` `i;``        ` `      ``/* Else get the index of last occurrence of x.``         ``Note that we are only looking in the``         ``subarray after first occurrence */` `      ``j = last(arr, i, n-``1``, x, n);    ``        ` `      ``/* return count */``      ``return` `j-i+``1``;``    ``}``     ` `    ``/* if x is present in arr[] then returns the``       ``index of FIRST occurrence of x in arr[0..n-1],``       ``otherwise returns -1 */``    ``static` `int` `first(``int` `arr[], ``int` `low, ``int` `high, ``int` `x, ``int` `n)``    ``{``      ``if``(high >= low)``      ``{``        ``/*low + (high - low)/2;*/` `        ``int` `mid = (low + high)/``2``; ``        ``if``( ( mid == ``0` `|| x > arr[mid-``1``]) && arr[mid] == x)``          ``return` `mid;``        ``else` `if``(x > arr[mid])``          ``return` `first(arr, (mid + ``1``), high, x, n);``        ``else``          ``return` `first(arr, low, (mid -``1``), x, n);``      ``}``      ``return` `-``1``;``    ``}``     ` `    ``/* if x is present in arr[] then returns the``       ``index of LAST occurrence of x in arr[0..n-1],``       ``otherwise returns -1 */``    ``static` `int` `last(``int` `arr[], ``int` `low, ``int` `high, ``int` `x, ``int` `n)``    ``{``      ``if``(high >= low)``      ``{``        ``/*low + (high - low)/2;*/`     `        ``int` `mid = (low + high)/``2``;``        ``if``( ( mid == n-``1` `|| x < arr[mid+``1``]) && arr[mid] == x )``          ``return` `mid;``        ``else` `if``(x < arr[mid])``          ``return` `last(arr, low, (mid -``1``), x, n);``        ``else``          ``return` `last(arr, (mid + ``1``), high, x, n);     ``      ``}``      ``return` `-``1``;``    ``}``     ` `    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = {``1``, ``2``, ``2``, ``3``, ``3``, ``3``, ``3``};``        ` `        ``// Element to be counted in arr[]``        ``int` `x =  ``3``;``        ``int` `n = arr.length;``        ``int` `c = count(arr, x, n);``        ``System.out.println(x+``" occurs "``+c+``" times"``);``    ``}``}`

## Python3

 `# Python3 program to count``# occurrences of an element` `# if x is present in arr[] then``# returns the count of occurrences``# of x, otherwise returns -1.``def` `count(arr, x, n):` `    ``# get the index of first``    ``# occurrence of x``    ``i ``=` `first(arr, ``0``, n``-``1``, x, n)`` ` `    ``# If x doesn't exist in``    ``# arr[] then return -1``    ``if` `i ``=``=` `-``1``:``        ``return` `i``    ` `    ``# Else get the index of last occurrence``    ``# of x. Note that we are only looking``    ``# in the subarray after first occurrence  ``    ``j ``=` `last(arr, i, n``-``1``, x, n);    ``    ` `    ``# return count``    ``return` `j``-``i``+``1``;` `# if x is present in arr[] then return``# the index of FIRST occurrence of x in``# arr[0..n-1], otherwise returns -1``def` `first(arr, low, high, x, n):``    ``if` `high >``=` `low:` `        ``# low + (high - low)/2``        ``mid ``=` `(low ``+` `high)``/``/``2`     `        ` `        ``if` `(mid ``=``=` `0` `or` `x > arr[mid``-``1``]) ``and` `arr[mid] ``=``=` `x:``            ``return` `mid``        ``elif` `x > arr[mid]:``            ``return` `first(arr, (mid ``+` `1``), high, x, n)``        ``else``:``            ``return` `first(arr, low, (mid ``-``1``), x, n)``    ``return` `-``1``;`` ` `# if x is present in arr[] then return``# the index of LAST occurrence of x``# in arr[0..n-1], otherwise returns -1``def` `last(arr, low, high, x, n):``    ``if` `high >``=` `low:` `        ``# low + (high - low)/2``        ``mid ``=` `(low ``+` `high)``/``/``2``;`` ` `        ``if``(mid ``=``=` `n``-``1` `or` `x < arr[mid``+``1``]) ``and` `arr[mid] ``=``=` `x :``            ``return` `mid``        ``elif` `x < arr[mid]:``            ``return` `last(arr, low, (mid ``-``1``), x, n)``        ``else``:``            ``return` `last(arr, (mid ``+` `1``), high, x, n)    ``    ``return` `-``1` `# driver program to test above functions``arr ``=` `[``1``, ``2``, ``2``, ``3``, ``3``, ``3``, ``3``]``x ``=` `3`  `# Element to be counted in arr[]``n ``=` `len``(arr)``c ``=` `count(arr, x, n)``print` `(``"%d occurs %d times "``%``(x, c))`

## C#

 `// C# program to count occurrences``// of an element``using` `System;` `class` `GFG``{``    ` `    ``/* if x is present in arr[] then returns``    ``the count of occurrences of x,``    ``otherwise returns -1. */``    ``static` `int` `count(``int` `[]arr, ``int` `x, ``int` `n)``    ``{``    ``// index of first occurrence of x in arr[0..n-1]``    ``int` `i;``        ` `    ``// index of last occurrence of x in arr[0..n-1]``    ``int` `j;``        ` `    ``/* get the index of first occurrence of x */``    ``i = first(arr, 0, n-1, x, n);``    ` `    ``/* If x doesn't exist in arr[] then return -1 */``    ``if``(i == -1)``        ``return` `i;``        ` `    ``/* Else get the index of last occurrence of x.``        ``Note that we are only looking in the``        ``subarray after first occurrence */``    ``j = last(arr, i, n-1, x, n);    ``        ` `    ``/* return count */``    ``return` `j-i+1;``    ``}``    ` `    ``/* if x is present in arr[] then returns the``    ``index of FIRST occurrence of x in arr[0..n-1],``    ``otherwise returns -1 */``    ``static` `int` `first(``int` `[]arr, ``int` `low, ``int` `high,``                                     ``int` `x, ``int` `n)``    ``{``    ``if``(high >= low)``    ``{``        ``/*low + (high - low)/2;*/``        ``int` `mid = (low + high)/2;``        ``if``( ( mid == 0 || x > arr[mid-1])``                            ``&& arr[mid] == x)``        ``return` `mid;``        ``else` `if``(x > arr[mid])``        ``return` `first(arr, (mid + 1), high, x, n);``        ``else``        ``return` `first(arr, low, (mid -1), x, n);``    ``}``    ``return` `-1;``    ``}``    ` `    ``/* if x is present in arr[] then returns the``    ``index of LAST occurrence of x in arr[0..n-1],``    ``otherwise returns -1 */``    ``static` `int` `last(``int` `[]arr, ``int` `low,``                        ``int` `high, ``int` `x, ``int` `n)``    ``{``    ``if``(high >= low)``    ``{``        ``/*low + (high - low)/2;*/`   `        ``int` `mid = (low + high)/2;``        ``if``( ( mid == n-1 || x < arr[mid+1])``                            ``&& arr[mid] == x )``        ``return` `mid;``        ``else` `if``(x < arr[mid])``        ``return` `last(arr, low, (mid -1), x, n);``        ``else``        ``return` `last(arr, (mid + 1), high, x, n);    ``    ``}``    ``return` `-1;``    ``}``    ` `    ``public` `static` `void` `Main()``    ``{``        ``int` `[]arr = {1, 2, 2, 3, 3, 3, 3};``        ` `        ``// Element to be counted in arr[]``        ``int` `x = 3;``        ``int` `n = arr.Length;``        ``int` `c = count(arr, x, n);``        ` `        ``Console.Write(x + ``" occurs "` `+ c + ``" times"``);``    ``}``}``// This code is contributed by Sam007`

## Javascript

 ``

Output:

`3 occurs 4 times`

Time Complexity: O(Logn)

Auxiliary Space: O(1), as no extra space is used

Using Collections.frequency() method of java

## C++

 `// C++ program for the above approach` `#include ``using` `namespace` `std;` `// Function to count occurrences``int` `countOccurrences(``int` `arr[],``                        ``int` `x, ``int` `N)``{``    ``int` `count = 0;``    ``for` `(``int` `i=0; i < N; i++)``        ``if` `(arr[i] == x)``            ``count++;``    ``return` `count;``}` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 1, 2, 2, 2, 2, 3, 4, 7, 8, 8 };``    ``int` `x = 2;``    ``int` `N = ``sizeof``(arr) / ``sizeof``(arr[0]);`` ` `    ``// displaying the frequency of x in ArrayList``    ``cout <

## Java

 `/*package whatever //do not write package name here */``import` `java.util.ArrayList;``import` `java.util.Collections;` `public` `class` `GFG {``  ` `    ``// Function to count occurrences``    ``static` `int` `countOccurrences(ArrayList clist,``                                ``int` `x)``    ``{``        ``// returning the frequency of``        ``// element x in the ArrayList``        ``// using Collections.frequency() method``        ``return` `Collections.frequency(clist, x);``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``1``, ``2``, ``2``, ``2``, ``2``, ``3``, ``4``, ``7``, ``8``, ``8` `};``        ``int` `x = ``2``;``        ``ArrayList clist = ``new` `ArrayList<>();` `        ``// adding elements of array to``        ``// ArrayList``        ``for` `(``int` `i : arr)``            ``clist.add(i);` `        ``// displaying the frequency of x in ArrayList``        ``System.out.println(x + ``" occurs "``                           ``+ countOccurrences(clist, x)``                           ``+ ``" times"``);``    ``}``}`

## Python3

 `# Python code to implement the approach` `# Function to count occurrences``def` `countOccurrences(arr, x) :` `    ``count ``=` `0``    ``n ``=` `len``(arr)``    ``for` `i ``in` `range``(n) :``        ``if` `(arr[i] ``=``=` `x):``            ``count ``+``=` `1``            ` `    ``return` `count``   ` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``        ` `    ``arr ``=` `[ ``1``, ``2``, ``2``, ``2``, ``2``, ``3``, ``4``, ``7``, ``8``, ``8` `]``    ``x ``=` `2``  ` `    ``# displaying the frequency of x in ArrayList``    ``print``(x , ``"occurs"``                        ``, countOccurrences(arr, x)``                        ``, ``"times"``)``    ` `    ``# This code is contributed by sanjoy_62.`

## C#

 `// C# program for the above approach``using` `System;` `public` `class` `GFG``{` `    ``// Function to count occurrences``    ``static` `int` `countOccurrences(``int``[] arr,``                                ``int` `x)``    ``{``        ``int` `count = 0;``        ``int` `n = arr.Length;``        ``for` `(``int` `i=0; i < n; i++)``        ``if` `(arr[i] == x)``            ``count++;``        ``return` `count;``    ``}   ``  ` `    ``// Driver Code``    ``public` `static` `void` `Main (``string``[] args)``    ``{``        ``int``[] arr = { 1, 2, 2, 2, 2, 3, 4, 7, 8, 8 };``        ``int` `x = 2;`` ` `        ``// displaying the frequency of x in ArrayList``        ``Console.WriteLine(x + ``" occurs "``                           ``+ countOccurrences(arr, x)``                           ``+ ``" times"``);`` ` `    ``}``}` `// This code is contributed by avijitmondal1998.`

## Javascript

 ``

Output:

`2 occurs 4 times`

Time Complexity: O(n)

Auxiliary Space: O(1), as no extra space is used