Open In App

Program to calculate Bitonicity of an Array

Last Updated : 08 Sep, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

Given an array of N    integers. The task is to find the Bitonicity of the given array.
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 bt = 0    and start traversing the array, if the next element is greater than current, increment bt by 1 and if the next element is smaller than current then decrement bt by 1. 

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.

Next Article
Article Tags :
Practice Tags :

Similar Reads