Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

C++ Program for Minimum product pair an array of positive Integers

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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.

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] .

C++




// 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)
{
    //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


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. 

C++




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


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
Last Updated : 02 Aug, 2022
Like Article
Save Article
Similar Reads
Related Tutorials