GeeksforGeeks App
Open App
Browser
Continue

# 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:

## C++

 `// C++ code for the approach` `#include``using` `namespace` `std;` `// Function to print the minimum product of any two numbers in the array``int` `minProduct(``int` `arr[], ``int` `n) {``    ``// Initializing minimum product``    ``int` `minProd = INT_MAX;``    ` `    ``// Loop to generate all possible pairs of elements``    ``for``(``int` `i=0; i

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++

 `// C++ program for the above approach``#include ``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

 `// 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.`

## Python3

 `# 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.`

## Javascript

 `// 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`

## C#

 `// 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));``  ``}``}`

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++

 `// C++ program to calculate minimum``// product of a pair``#include ``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

## Java

 `// 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.`

## Python3

 `# 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.`

## Javascript

 ``

## C#

 `// 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.`

## PHP

 ``

Output

`25`

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