 GFG App
Open App Browser
Continue

# Java Program for 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 : 9348
Explanation : The minimum product of any
two numbers will be 76 * 123 = 9348.```

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.

## Java

 `// Java program to find minimum product of any two numbers in an array`   `import` `java.util.Arrays;`   `public` `class` `MinProductOfTwo {` `      ``// Driver Code` `    ``public` `static` `void` `main(String[] args) {` `        ``int``[] arr = { ``11``, ``8``, ``5``, ``7``, ``5``, ``100` `};` `        ``int` `n = arr.length;` `          `  `          ``// Function Call` `        ``int` `minProduct = printMinimumProduct(arr);` `        ``System.out.println(minProduct);` `    ``}`   `     `  `    ``public` `static` `int` `printMinimumProduct(``int``[] arr) {` `        ``int` `minProduct = Integer.MAX_VALUE;` `      `  `          ``// loop through all possible pairs of array elements and find minimum product` `        ``for` `(``int` `i = ``0``; i < arr.length - ``1``; i++) {` `            ``for` `(``int` `j = i + ``1``; j < arr.length; j++) {` `                ``int` `product = arr[i] * arr[j];` `                  `  `                  ``// if minProduct is greater than the current product of 2 elements` `                  ``// then update the minProduct with that one` `                ``if` `(product < minProduct) {` `                    ``minProduct = product;` `                ``}` `            ``}` `        ``}` `        `  `          ``// return minimum product` `        ``return` `minProduct;` `    ``}` `}`

Output

`25`

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

## Java

 `// Java program to find the minimum product of any two` `// numbers in an array`   `import` `java.util.Arrays;`   `public` `class` `GFG {` `    ``// Function to find the minimum product of any two` `    ``// numbers in an array` `    ``static` `long` `findMinimumProduct(``int``[] arr) {` `        ``int` `n = arr.length;` `          `  `          ``// sort the array` `        ``Arrays.sort(arr); ` `      `  `          ``// return the product of first two` `        ``// numbers` `        ``return` `(``long``)arr[``0``] * arr[``1``]; ` `    ``}` `  `  `    ``// Driver code` `    ``public` `static` `void` `main(String[] args) {` `          ``// Input array` `        ``int``[] arr = { ``11``, ``8` `, ``5` `, ``7` `, ``5` `, ``100` `};` `      `  `          ``// Function Call` `        ``long` `minProduct = findMinimumProduct(arr);` `      `  `          ``// Printing final answer` `        ``System.out.println(minProduct);` `    ``}` `}`

Output

`25`

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.

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

Output

`25`

Time Complexity: O(n)
Auxiliary Space: O(1) Please refer complete article on Minimum product pair an array of positive Integers for more details!

My Personal Notes arrow_drop_up