# Find the number of elements greater than k in a sorted array

Given a sorted array arr[] of integers and an integer k, the task is to find the count of elements in the array which are greater than k. Note that k may or may not be present in the array.

Examples:

Input: arr[] = {2, 3, 5, 6, 6, 9}, k = 6
Output: 1

Input: arr[] = {1, 1, 2, 5, 5, 7}, k = 8
Output: 0

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

Approach: The idea is to perform binary search and find the number of elements greater than k.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the count of elements ` `// from the array which are greater than k ` `int` `countGreater(``int` `arr[], ``int` `n, ``int` `k) ` `{ ` `    ``int` `l = 0; ` `    ``int` `r = n - 1; ` ` `  `    ``// Stores the index of the left most element ` `    ``// from the array which is greater than k ` `    ``int` `leftGreater = n; ` ` `  `    ``// Finds number of elements greater than k ` `    ``while` `(l <= r) { ` `        ``int` `m = l + (r - l) / 2; ` ` `  `        ``// If mid element is greater than ` `        ``// k update leftGreater and r ` `        ``if` `(arr[m] > k) { ` `            ``leftGreater = m; ` `            ``r = m - 1; ` `        ``} ` ` `  `        ``// If mid element is less than ` `        ``// or equal to k update l ` `        ``else` `            ``l = m + 1; ` `    ``} ` ` `  `    ``// Return the count of elements greater than k ` `    ``return` `(n - leftGreater); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 3, 3, 4, 7, 7, 7, 11, 13, 13 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` ` `  `    ``int` `k = 7; ` ` `  `    ``cout << countGreater(arr, n, k); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` `     `  `// Function to return the count of elements ` `// from the array which are greater than k ` `static` `int` `countGreater(``int` `arr[], ``int` `n, ``int` `k) ` `{ ` `    ``int` `l = ``0``; ` `    ``int` `r = n - ``1``; ` ` `  `    ``// Stores the index of the left most element ` `    ``// from the array which is greater than k ` `    ``int` `leftGreater = n; ` ` `  `    ``// Finds number of elements greater than k ` `    ``while` `(l <= r) { ` `        ``int` `m = l + (r - l) / ``2``; ` ` `  `        ``// If mid element is greater than ` `        ``// k update leftGreater and r ` `        ``if` `(arr[m] > k) { ` `            ``leftGreater = m; ` `            ``r = m - ``1``; ` `        ``} ` ` `  `        ``// If mid element is less than ` `        ``// or equal to k update l ` `        ``else` `            ``l = m + ``1``; ` `    ``} ` ` `  `    ``// Return the count of elements greater than k ` `    ``return` `(n - leftGreater); ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `arr[] = { ``3``, ``3``, ``4``, ``7``, ``7``, ``7``, ``11``, ``13``, ``13` `}; ` `    ``int` `n = arr.length; ` ` `  `    ``int` `k = ``7``; ` ` `  `    ``System.out.println(countGreater(arr, n, k)); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech `

## Python3

 `# Python 3 implementation of the approach ` ` `  `# Function to return the count of elements ` `# from the array which are greater than k ` `def` `countGreater(arr, n, k): ` `    ``l ``=` `0` `    ``r ``=` `n ``-` `1` ` `  `    ``# Stores the index of the left most element ` `    ``# from the array which is greater than k ` `    ``leftGreater ``=` `n ` ` `  `    ``# Finds number of elements greater than k ` `    ``while` `(l <``=` `r): ` `        ``m ``=` `int``(l ``+` `(r ``-` `l) ``/` `2``) ` ` `  `        ``# If mid element is greater than ` `        ``# k update leftGreater and r ` `        ``if` `(arr[m] > k): ` `            ``leftGreater ``=` `m ` `            ``r ``=` `m ``-` `1` ` `  `        ``# If mid element is less than ` `        ``# or equal to k update l ` `        ``else``: ` `            ``l ``=` `m ``+` `1` ` `  `    ``# Return the count of elements  ` `    ``# greater than k ` `    ``return` `(n ``-` `leftGreater) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``arr ``=` `[``3``, ``3``, ``4``, ``7``, ``7``, ``7``, ``11``, ``13``, ``13``] ` `    ``n ``=` `len``(arr) ` `    ``k ``=` `7` ` `  `    ``print``(countGreater(arr, n, k)) ` `# This code is contributed by ` `# Surendra_Gangwar `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `// Function to return the count of elements ` `// from the array which are greater than k ` `static` `int` `countGreater(``int``[]arr, ``int` `n, ``int` `k) ` `{ ` `    ``int` `l = 0; ` `    ``int` `r = n - 1; ` ` `  `    ``// Stores the index of the left most element ` `    ``// from the array which is greater than k ` `    ``int` `leftGreater = n; ` ` `  `    ``// Finds number of elements greater than k ` `    ``while` `(l <= r)  ` `    ``{ ` `        ``int` `m = l + (r - l) / 2; ` ` `  `        ``// If mid element is greater than ` `        ``// k update leftGreater and r ` `        ``if` `(arr[m] > k)  ` `        ``{ ` `            ``leftGreater = m; ` `            ``r = m - 1; ` `        ``} ` ` `  `        ``// If mid element is less than ` `        ``// or equal to k update l ` `        ``else` `            ``l = m + 1; ` `    ``} ` ` `  `    ``// Return the count of elements greater than k ` `    ``return` `(n - leftGreater); ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main() ` `{ ` `    ``int``[] arr = { 3, 3, 4, 7, 7, 7, 11, 13, 13 }; ` `    ``int` `n = arr.Length; ` ` `  `    ``int` `k = 7; ` ` `  `    ``Console.WriteLine(countGreater(arr, n, k)); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech `

## PHP

 ` ``\$k``)  ` `        ``{ ` `            ``\$leftGreater` `= ``\$m``; ` `            ``\$r` `= ``\$m` `- 1; ` `        ``} ` ` `  `        ``// If mid element is less than ` `        ``// or equal to k update l ` `        ``else` `            ``\$l` `= ``\$m` `+ 1; ` `    ``} ` ` `  `    ``// Return the count of elements greater than k ` `    ``return` `(``\$n` `- ``\$leftGreater``); ` `} ` ` `  `// Driver code ` `\$arr` `= ``array``(3, 3, 4, 7, 7, 7, 11, 13, 13); ` `\$n` `= sizeof(``\$arr``); ` `\$k` `= 7; ` ` `  `echo` `countGreater(``\$arr``, ``\$n``, ``\$k``); ` ` `  `// This code is contributed ` `// by Akanksha Rai `

Output:

```3
```

Time Complexity: O(log(n)) where n is the number of elements in the array.

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.