 Open in App
Not now

# Minimum product pair an array of positive Integers

• Difficulty Level : Easy
• Last Updated : 31 Oct, 2022

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.
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 * a

## 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 * arr;``}`` ` `// Driver program to test above function``int` `main()``{``    ``int` `a[] = { 11, 8 , 5 , 7 , 5 , 100 };``    ``int` `n = ``sizeof``(a) / ``sizeof``(a);``    ``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.`

## 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 * arr;``  ``}` `  ``// driver program``  ``static` `void` `Main() {``    ``int` `[]a = { 11, 8 , 5 , 7 ,5 , 100 };``    ``int` `n = a.Length;``    ``Console.WriteLine(printMinimumProduct(a, n));``  ``}``}`

## 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 * arr;``}` `// 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++

 `// 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, arr);``    ``int` `second_min = max(arr, arr);` `    ``// 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.`

## 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,``                                    ``arr);``                                    ` `        ``int` `second_min = Math.Max(arr,``                                    ``arr);``    ` `        ``// 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

 ``

## Javascript

 ``

Output

`25`

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