human
Count number of occurrences ( or frequency ) in a sorted array | A recursive binary search function . It returns location of x in given array arr [ l . . r ] is present , otherwise - 1.
If the element is present at the middle itself.
If element is smaller than mid , then it can only be present in left subarray.
Else the element can only be present in right subarray.
Returns number of times x occurs in arr [ 0. . n - 1 ].
If element is not present.
Count elements on left side ..
Count elements on right side ..
Driver code"
How can the above be solved in Python?
 ... What is a code to count number of occurrences ( or frequency ) in a sorted array and the other steps required?
assistant
#Here is code to count number of occurrences ( or frequency ) in a sorted array and the other steps required.
 def binarySearch ( arr , l , r , x ) :
	if ( r < l ) :
		return - 1
	mid = int ( l + ( r - l ) / 2 )
	if arr [ mid ] == x :
		return mid
	if arr [ mid ] > x :
		return binarySearch ( arr , l , mid - 1 , x )
	return binarySearch ( arr , mid + 1 , r , x )
def countOccurrences ( arr , n , x ) :
	ind = binarySearch ( arr , 0 , n - 1 , x )
	if ind == - 1 :
		return 0
	count = 1
	left = ind - 1
	while ( left >= 0 and arr [ left ] == x ) :
		count += 1
		left -= 1
	right = ind + 1 ;
	while ( right < n and arr [ right ] == x ) :
		count += 1
		right += 1
	return count
arr = [ 1 , 2 , 2 , 2 , 2 , 3 , 4 , 7 , 8 , 8 ]
n = len ( arr )
x = 2
print ( countOccurrences ( arr , n , x ) )