# 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: Please try your approach on {IDE} first, before moving on to the solution.

Simple Approach : A simple approach will be to run two nested loops to generate all possible pair of elements and keep track of the minimum product.
Time Complexity: O( n * n)
Auxiliary Space: O( 1 )

Better Approach: An efficient approach will be to first sort the given array and print the product of first two numbers, sorting will take O(n log n). Answer will be then a[0] * a[1]
Time Complexity: O( n * log(n))
Auxiliary Space: O( 1 )

Best Approach: The idea is linearly traverse given array and keep track of minimum two elements. Finally return product of two minimum elements.

Below is the implementation of above approach.

 `// 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 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] ` `        `  `         ``elif` `(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. `

 ` `

Output:
```25
```

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