Find the first, second and third minimum elements in an array in O(n).
Examples:
Input : 9 4 12 6
Output : First min = 4
Second min = 6
Third min = 9
Input : 4 9 1 32 12
Output : First min = 1
Second min = 4
Third min = 9
First approach : First we can use normal method that is sort the array and then print first, second and third element of the array. Time complexity of this solution is O(n Log n).
C++
#include<bits/stdc++.h>
using namespace std;
int Print3Smallest( int array[], int n)
{
sort(array,array+n);
cout << "First min = " << array[0] << "\n" ;
cout << "Second min = " << array[1] << "\n" ;
cout << "Third min = " << array[2] << "\n" ;
}
int main()
{
int array[] = {4, 9, 1, 32, 12};
int n = sizeof (array) / sizeof (array[0]);
Print3Smallest(array, n);
return 0;
}
|
Java
import java.util.Arrays;
public class Main {
static void Print3Smallest( int array[], int n) {
Arrays.sort(array);
System.out.println( "First min = " + array[ 0 ]);
System.out.println( "Second min = " + array[ 1 ]);
System.out.println( "Third min = " + array[ 2 ]);
}
public static void main(String[] args) {
int array[] = { 4 , 9 , 1 , 32 , 12 };
int n = array.length;
Print3Smallest(array, n);
}
}
|
Python3
def print_3_smallest(array):
array.sort()
print ( "First min =" , array[ 0 ])
print ( "Second min =" , array[ 1 ])
print ( "Third min =" , array[ 2 ])
if __name__ = = '__main__' :
array = [ 4 , 9 , 1 , 32 , 12 ]
n = len (array)
print_3_smallest(array)
|
C#
using System;
using System.Linq;
class Program
{
static void Print3Smallest( int [] array, int n)
{
Array.Sort(array);
Console.WriteLine( "First min = " + array[0]);
Console.WriteLine( "Second min = " + array[1]);
Console.WriteLine( "Third min = " + array[2]);
}
static void Main()
{
int [] array = {4, 9, 1, 32, 12};
int n = array.Length;
Print3Smallest(array, n);
}
}
|
Javascript
function Print3Smallest(array,n){
array.sort((a, b) => a - b);
console.log( 'First min = ' + array[0]);
console.log( 'Second min = ' + array[1]);
console.log( 'Third min = ' + array[2]);
}
let array = [4, 9, 1, 32, 12];
Print3Smallest(array,array.length);
|
OutputFirst min = 1
Second min = 4
Third min = 9
Second approach : Time complexity of this solution is O(n).
Algorithm:
- First take an element
- then if array[index] < Firstelement
- Thirdelement = Secondelement
- Secondelement = Firstelement
- Firstelement = array[index]
- else if array[index] < Secondelement
- Thirdelement = Secondelement
- Secondelement = array[index]
- else if array[index] < Thirdelement
- Thirdelement = array[index]
- then print all the element
Implementation:
C++
#include<bits/stdc++.h>
#define MAX 100000
using namespace std;
int Print3Smallest( int array[], int n)
{
int firstmin = MAX, secmin = MAX, thirdmin = MAX;
for ( int i = 0; i < n; i++)
{
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
else if (array[i] < thirdmin)
thirdmin = array[i];
}
cout << "First min = " << firstmin << "\n" ;
cout << "Second min = " << secmin << "\n" ;
cout << "Third min = " << thirdmin << "\n" ;
}
int main()
{
int array[] = {4, 9, 1, 32, 12};
int n = sizeof (array) / sizeof (array[0]);
Print3Smallest(array, n);
return 0;
}
|
Java
import java.util.*;
public class GFG
{
static void Print3Smallest( int array[], int n)
{
int firstmin = Integer.MAX_VALUE;
int secmin = Integer.MAX_VALUE;
int thirdmin = Integer.MAX_VALUE;
for ( int i = 0 ; i < n; i++)
{
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
else if (array[i] < thirdmin)
thirdmin = array[i];
}
System.out.println( "First min = " + firstmin );
System.out.println( "Second min = " + secmin );
System.out.println( "Third min = " + thirdmin );
}
public static void main(String[] args)
{
int array[] = { 4 , 9 , 1 , 32 , 12 };
int n = array.length;
Print3Smallest(array, n);
}
}
|
Python3
MAX = 100000
def Print3Smallest(arr, n):
firstmin = MAX
secmin = MAX
thirdmin = MAX
for i in range ( 0 , n):
if arr[i] < firstmin:
thirdmin = secmin
secmin = firstmin
firstmin = arr[i]
elif arr[i] < secmin:
thirdmin = secmin
secmin = arr[i]
elif arr[i] < thirdmin:
thirdmin = arr[i]
print ( "First min = " , firstmin)
print ( "Second min = " , secmin)
print ( "Third min = " , thirdmin)
arr = [ 4 , 9 , 1 , 32 , 12 ]
n = len (arr)
Print3Smallest(arr, n)
|
C#
using System;
class GFG
{
static void Print3Smallest( int []array, int n)
{
int firstmin = int .MaxValue;
int secmin = int .MaxValue;
int thirdmin = int .MaxValue;
for ( int i = 0; i < n; i++)
{
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
else if (array[i] < thirdmin)
thirdmin = array[i];
}
Console.WriteLine( "First min = " + firstmin );
Console.WriteLine( "Second min = " + secmin );
Console.WriteLine( "Third min = " + thirdmin );
}
static void Main()
{
int []array = new int []{4, 9, 1, 32, 12};
int n = array.Length;
Print3Smallest(array, n);
}
}
|
PHP
<?php
function Print3Smallest( $array , $n )
{
$MAX = 100000;
$firstmin = $MAX ;
$secmin = $MAX ;
$thirdmin = $MAX ;
for ( $i = 0; $i < $n ; $i ++)
{
if ( $array [ $i ] < $firstmin )
{
$thirdmin = $secmin ;
$secmin = $firstmin ;
$firstmin = $array [ $i ];
}
else if ( $array [ $i ] < $secmin )
{
$thirdmin = $secmin ;
$secmin = $array [ $i ];
}
else if ( $array [ $i ] < $thirdmin )
$thirdmin = $array [ $i ];
}
echo "First min = " . $firstmin . "\n" ;
echo "Second min = " . $secmin . "\n" ;
echo "Third min = " . $thirdmin . "\n" ;
}
$array = array (4, 9, 1, 32, 12);
$n = sizeof( $array ) / sizeof( $array [0]);
Print3Smallest( $array , $n );
?>
|
Javascript
<script>
let MAX = 100000
function Print3Smallest( array, n)
{
let firstmin = MAX, secmin = MAX, thirdmin = MAX;
for (let i = 0; i < n; i++)
{
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
else if (array[i] < thirdmin)
thirdmin = array[i];
}
document.write( "First min = " + firstmin + "</br>" );
document.write( "Second min = " + secmin + "</br>" );
document.write( "Third min = " + thirdmin + "</br>" );
}
let array = [4, 9, 1, 32, 12];
let n = array.length;
Print3Smallest(array, n);
</script>
|
OutputFirst min = 1
Second min = 4
Third min = 9
Time Complexity: O(n)
Auxiliary Space: O(1)
Please Login to comment...