Open In App

Minimum product pair an array of positive Integers

Given an array of positive integers. We are required to write a program to print the minimum product of any two numbers of the given array.

Examples: 

Input: 11 8 5 7 5 100
Output: 25 
Explanation: The minimum product of any two numbers will be 5 * 5 = 25.

Input: 198 76 544 123 154 675 
Output: 7448
Explanation: The minimum product of any two numbers will be 76 * 123 = 7448.

Recommended Practice

A basic approach using two nested loops:

A simple approach will be to run two nested loops to generate all possible pairs of elements and keep track of the minimum product. 

Algorithm:

  1.    Initialize a variable ‘minProduct’ as maximum possible value.
  2.    Traverse the given array using two nested loops:
           a. For each pair of elements, calculate their product and update ‘minProduct’ if it is lesser than the current value.
  3.    Return the final value of ‘minProduct’.

Below is the implementation of the approach:








// Java code for the approach
public class GFG {
    // Function to print the minimum product of any
    // two numbers in the array
        static int minProduct(int[] arr, int n) {
        // Initializing minimum product
        int minProd = Integer.MAX_VALUE;
         
        // Loop to generate all possible pairs of elements
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                // Updating minimum product
                minProd = Math.min(minProd, arr[i] * arr[j]);
            }
        }
         
        // Return the minimum product
        return minProd;
    }
 
    // Driver code
    public static void main(String[] args) {
        int[] arr = {11, 8, 5, 7, 5, 100};
        int n = arr.length;
         
        // Function call
        int minProd = minProduct(arr, n);
        System.out.println(minProd);
    }
}




# Function to print the minimum product of any
# two numbers in the array
def minProduct(arr, n):
    # Initializing minimum product
    minProd = float('inf')
     
    # Loop to generate all possible pairs of elements
    for i in range(n - 1):
        for j in range(i + 1, n):
            # Updating minimum product
            minProd = min(minProd, arr[i] * arr[j])
     
    # Return the minimum product
    return minProd
 
# Driver code
if __name__ == "__main__":
    arr = [11, 8, 5, 7, 5, 100]
    n = len(arr)
     
    # Function call
    minProd = minProduct(arr, n)
    print(minProd)
# This code is contributed by shivamgupta310570




// C# code for the approach
using System;
 
public class GFG {
    // Function to print the minimum product of any
    // two numbers in the array
        static int minProduct(int[] arr, int n) {
        // Initializing minimum product
        int minProd = Int32.MaxValue;
         
        // Loop to generate all possible pairs of elements
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                // Updating minimum product
                minProd = Math.Min(minProd, arr[i] * arr[j]);
            }
        }
         
        // Return the minimum product
        return minProd;
    }
 
    // Driver code
    public static void Main() {
        int[] arr = {11, 8, 5, 7, 5, 100};
        int n = arr.Length;
         
        // Function call
        int minProd = minProduct(arr, n);
        Console.WriteLine(minProd);
    }
}
 
// This code is contributed by Vaibhav Nandan





Output
25










Time Complexity: O( n * n) 
Auxiliary Space: O( 1 )

An optimized approach using sorting:

An optimized approach will be to first sort the given array and print the product of the first two numbers, sorting will take O(n log n) and the answer will be a[0] * a[1] 




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to calculate minimum product
// of pair
int printMinimumProduct(int arr[], int n)
{
    //Sort the array
    sort(arr,arr+n);
      
    // Returning the product of first two numbers
    return arr[0] * arr[1];
}
  
// Driver program to test above function
int main()
{
    int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << printMinimumProduct(a,n);
    return 0;
}
  
// This code is contributed by Pushpesh Raj




// java program for the above approach
import java.util.*;
class GFG
{
   
  // Function to calculate minimum product
  // of pair
  static int printMinimumProduct(int arr[], int n)
  {
     
    // Sort the array
    Arrays.sort(arr);
 
    // Returning the product of first two numbers
    return arr[0]*arr[1];
  }
 
  // Driver program to test above function
  public static void main (String[] args) {
    int a[]={ 11, 8 , 5 , 7 , 5 , 100 };
    int n=a.length;
    System.out.println(printMinimumProduct(a,n));
  }
}
 
// This code is contributed by nmkiniqw7b.




# Python program for the above approach
 
# Function to calculate minimum product
# of pair
def printMinimumProduct(list,n):
 
  # Sort the list
  list.sort()
 
  # Returning the product of first two numbers
  return list[0]*list[1]
 
# Driver code
 
a = [ 11, 8 , 5 , 7 , 5 , 100 ]
n = len(a)
 
print(printMinimumProduct(a,n))
 
# This code is contributed by nmkiniqw7b.




// C# program for the above approach
using System;
class GFG
{
 
  //function to calculate minimum product of pair
  static int printMinimumProduct(int []arr,int n)
  {
 
    // first sort the array
    Array.Sort(arr);
 
    // returning the product of first two numbers
    return arr[0] * arr[1];
  }
 
  // driver program
  static void Main() {
    int []a = { 11, 8 , 5 , 7 ,5 , 100 };
    int n = a.Length;
    Console.WriteLine(printMinimumProduct(a, n));
  }
}




// Javascript program for the above approach
 
// Function to calculate minimum product
// of pair
function printMinimumProduct(arr, n)
{
    // Sort the array
    arr.sort(function(a, b){return a - b});
     
    // Returning the product of first two numbers
    return arr[0] * arr[1];
}
 
// Driver program to test above function
    let a = [ 11, 8 , 5 , 7 , 5 , 100 ];
    let n = a.Length;
    console.log(printMinimumProduct(a,n));
 
// This code is contributed by Aman Kumar

Output
25










Time Complexity: O( n * log(n)) 
Auxiliary Space: O(1)

An efficient approach using keep track of two minimum elements:

The idea is to linearly traverse a given array and keep track of a minimum of two elements. Finally, return the product of two minimum elements.

Below is the implementation of the above approach. 




// C++ program to calculate minimum
// product of a pair
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate minimum product
// of pair
int printMinimumProduct(int arr[], int n)
{
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    int first_min = min(arr[0], arr[1]);
    int second_min = max(arr[0], arr[1]);
 
    // Traverse remaining array and keep
    // track of two minimum elements (Note
    // that the two minimum elements may
    // be same if minimum element appears
    // more than once)
    // more than once)
    for (int i=2; i<n; i++)
    {
       if (arr[i] < first_min)
       {
          second_min = first_min;
          first_min = arr[i];
       }
       else if (arr[i] < second_min)
          second_min = arr[i];
    }
 
    return first_min * second_min;
}
 
// Driver program to test above function
int main()
{
    int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << printMinimumProduct(a,n);
    return 0;
}




// Java program to calculate minimum
// product of a pair
import java.util.*;
 
class GFG {
     
    // Function to calculate minimum product
    // of pair
    static int printMinimumProduct(int arr[], int n)
    {
        // Initialize first and second
        // minimums. It is assumed that the
        // array has at least two elements.
        int first_min = Math.min(arr[0], arr[1]);
        int second_min = Math.max(arr[0], arr[1]);
      
        // Traverse remaining array and keep
        // track of two minimum elements (Note
        // that the two minimum elements may
        // be same if minimum element appears
        // more than once)
        // more than once)
        for (int i = 2; i < n; i++)
        {
           if (arr[i] < first_min)
           {
              second_min = first_min;
              first_min = arr[i];
           }
           else if (arr[i] < second_min)
              second_min = arr[i];
        }
      
        return first_min * second_min;
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
        int n = a.length;
        System.out.print(printMinimumProduct(a,n));
      
    }
}
 
// This code is contributed by Arnav Kr. Mandal.




# Python program to
# calculate minimum
# product of a pair
 
# Function to calculate
# minimum product
# of pair
def printMinimumProduct(arr,n):
 
    # Initialize first and second
    # minimums. It is assumed that the
    # array has at least two elements.
    first_min = min(arr[0], arr[1])
    second_min = max(arr[0], arr[1])
  
    # Traverse remaining array and keep
    # track of two minimum elements (Note
    # that the two minimum elements may
    # be same if minimum element appears
    # more than once)
    # more than once)
    for i in range(2,n):
     
         if (arr[i] < first_min):
        
            second_min = first_min
            first_min = arr[i]
        
         else if (arr[i] < second_min):
            second_min = arr[i]
     
    return first_min * second_min
 
# Driver code
 
a= [ 11, 8 , 5 , 7 , 5 , 100 ]
n = len(a)
 
print(printMinimumProduct(a,n))
 
# This code is contributed
# by Anant Agarwal.




// C# program to calculate minimum
// product of a pair
using System;
 
class GFG {
     
    // Function to calculate minimum
    // product of pair
    static int printMinimumProduct(int []arr,
                                       int n)
    {
         
        // Initialize first and second
        // minimums. It is assumed that
        // the array has at least two
        // elements.
        int first_min = Math.Min(arr[0],
                                    arr[1]);
                                     
        int second_min = Math.Max(arr[0],
                                    arr[1]);
     
        // Traverse remaining array and
        // keep track of two minimum
        // elements (Note that the two
        // minimum elements may be same
        // if minimum element appears
        // more than once)
        for (int i = 2; i < n; i++)
        {
            if (arr[i] < first_min)
            {
                second_min = first_min;
                first_min = arr[i];
            }
            else if (arr[i] < second_min)
                second_min = arr[i];
        }
     
        return first_min * second_min;
    }
     
    /* Driver program to test above
    function */
    public static void Main()
    {
        int []a = { 11, 8 , 5 , 7 ,
                            5 , 100 };
        int n = a.Length;
         
        Console.WriteLine(
            printMinimumProduct(a, n));
    }
}
 
// This code is contributed by vt_m.




<script>
 
// Javascript program to calculate minimum
// product of a pair
 
// Function to calculate minimum product
// of pair
function printMinimumProduct(arr, n)
{
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    let first_min = Math.min(arr[0], arr[1]);
    let second_min = Math.max(arr[0], arr[1]);
 
    // Traverse remaining array and keep
    // track of two minimum elements (Note
    // that the two minimum elements may
    // be same if minimum element appears
    // more than once)
    // more than once)
    for (let i=2; i<n; i++)
    {
    if (arr[i] < first_min)
    {
        second_min = first_min;
        first_min = arr[i];
    }
    else if (arr[i] < second_min)
        second_min = arr[i];
    }
 
    return first_min * second_min;
}
 
// Driver program to test above function
 
    let a = [ 11, 8 , 5 , 7 , 5 , 100 ];
    let n = a.length;
    document.write(printMinimumProduct(a,n));
 
// This code is contributed by Mayank Tyagi
 
</script>




<?php
// PHP program to calculate minimum
// product of a pair
 
// Function to calculate minimum
// product of pair
function printMinimumProduct($arr, $n)
{
     
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    $first_min = min($arr[0], $arr[1]);
    $second_min = max($arr[0], $arr[1]);
 
    // Traverse remaining array and keep
    // track of two minimum elements (Note
    // that the two minimum elements may
    // be same if minimum element appears
    // more than once)
    // more than once)
    for ($i = 2; $i < $n; $i++)
    {
        if ($arr[$i] < $first_min)
        {
            $second_min = $first_min;
            $first_min = $arr[$i];
        }
        else if ($arr[$i] < $second_min)
            $second_min = $arr[$i];
    }
 
    return $first_min * $second_min;
}
 
// Driver Code
$a = array(11, 8 , 5 , 7 , 5 , 100);
$n = sizeof($a);
echo(printMinimumProduct($a, $n));
 
// This code is contributed by Ajit.
?>

Output
25










Time Complexity: O(n) 
Auxiliary Space: O(1) 

 


Article Tags :