Given an array of
The Bitonicity of an array arr[] can be defined as:
B[i] = 0, if i = 0. = B[i-1] + 1, if arr[i] > arr[i-1] = B[i-1] - 1, if arr[i] < arr[i-1] = B[i-1], if arr[i] = arr[i-1] Bitonicity will be last element of array B[].
Examples:
Input : arr[] = {1, 2, 3, 4, 5} Output : 4 Input : arr[] = {1, 4, 5, 3, 2} Output : 0
Given that the Bitonicity of an array arr[] can be defined as:
B[i] = 0, if i = 0. = B[i-1] + 1, if arr[i] > arr[i-1] = B[i-1] - 1, if arr[i] < arr[i-1] = B[i-1], if arr[i] = arr[i-1] Bitonicity will be last element of array B[].
From the above expression, it can be deduced that:
- The bitonicity of the array is initially 0.
- It increases by 1 on moving to next element if the next element is greater than previous element.
- It decreases by 1 on moving to next element if the next element is greater than previous element.
The idea is to take a variable
Below is the implementation of the above approach:
C++
// C++ program to find bitonicity // of an array #include <iostream> using namespace std;
// Function to find the bitonicity // of an array int findBitonicity( int arr[], int n)
{ int bt = 0;
for ( int i = 1; i < n; i++) {
if (arr[i] > arr[i - 1])
bt++;
else if (arr[i] < arr[i - 1])
bt--;
}
return bt;
} // Driver Code int main()
{ int arr[] = { 1, 2, 3, 4, 5, 6, 4, 3 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << "Bitonicity = " << findBitonicity(arr, n);
return 0;
} |
Java
// Java program to find bitonicity // of an array import java.util.*;
import java.lang.*;
class GFG
{ // Function to find the bitonicity // of an array static int findBitonicity( int [] arr,
int n)
{ int bt = 0 ;
for ( int i = 1 ; i < n; i++)
{
if (arr[i] > arr[i - 1 ])
bt++;
else if (arr[i] < arr[i - 1 ])
bt--;
}
return bt;
} // Driver Code public static void main(String args[])
{ int arr[] = { 1 , 2 , 3 , 4 , 5 , 6 , 4 , 3 };
int n = arr.length;
System.out.print( "Bitonicity = " +
findBitonicity(arr, n));
} } // This code is contributed // by Akanksha Rai |
Python3
# Python3 program to find bitonicity # of an array # Function to find the bitonicity # of an array def findBitonicity(arr, n):
bt = 0
for i in range ( 1 , n, 1 ):
if (arr[i] > arr[i - 1 ]):
bt + = 1
elif (arr[i] < arr[i - 1 ]):
bt - = 1
return bt
# Driver Code if __name__ = = '__main__' :
arr = [ 1 , 2 , 3 , 4 , 5 , 6 , 4 , 3 ]
n = len (arr)
print ( "Bitonicity =" ,
findBitonicity(arr, n))
# This code is contributed by # Surendra_Gangwar |
C#
// C# program to find bitonicity // of an array using System;
class GFG
{ // Function to find the bitonicity // of an array static int findBitonicity( int [] arr,
int n)
{ int bt = 0;
for ( int i = 1; i < n; i++)
{
if (arr[i] > arr[i - 1])
bt++;
else if (arr[i] < arr[i - 1])
bt--;
}
return bt;
} // Driver Code public static void Main()
{ int [] arr = { 1, 2, 3, 4, 5, 6, 4, 3 };
int n = arr.Length;
Console.Write( "Bitonicity = " +
findBitonicity(arr, n));
} } // This code is contributed // by Akanksha Rai |
PHP
<?php // PHP program to find bitonicity // of an array // Function to find the bitonicity // of an array function findBitonicity(& $arr , $n )
{ $bt = 0;
for ( $i = 1; $i < $n ; $i ++)
{
if ( $arr [ $i ] > $arr [ $i - 1])
$bt ++;
else if ( $arr [ $i ] < $arr [ $i - 1])
$bt --;
}
return $bt ;
} // Driver Code $arr = array (1, 2, 3, 4, 5, 6, 4, 3 );
$n = sizeof( $arr );
echo ( "Bitonicity = " );
echo findBitonicity( $arr , $n );
// This code is contributed // by Shivi_Aggarwal ?> |
Javascript
<script> // Javascript program to find bitonicity // of an array // Function to find the bitonicity // of an array function findBitonicity(arr , n)
{
var bt = 0;
for (i = 1; i < n; i++) {
if (arr[i] > arr[i - 1])
bt++;
else if (arr[i] < arr[i - 1])
bt--;
}
return bt;
}
// Driver Code
var arr = [ 1, 2, 3, 4, 5, 6, 4, 3 ];
var n = arr.length;
document.write( "Bitonicity = " + findBitonicity(arr, n));
// This code contributed by gauravrajput1 </script> |
Output
Bitonicity = 3
Complexity Analysis:
- Time Complexity: O(N), as we are using a loop to traverse N times for finding the bitonicity of the array.
- Auxiliary Space: O(1), as we are not using any extra space complexity.