在O(n)的数组中找到第一个,第二个和第三个最小元素。
例子:
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
第一种方法:首先,我们可以使用对数组进行排序的常规方法,然后打印数组的第一个,第二个和第三个元素。该解决方案的时间复杂度为O(n Log n)。
第二种方法:此解决方案的时间复杂度为O(n)。
算法-
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
C++
// CPP program to find the first, second
// and third minimum element in an array
#include
#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++)
{
/* Check if current element is less than
firstmin, then update first, second and
third */
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
/* Check if current element is less than
secmin then update second and third */
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
/* Check if current element is less than
then update third */
else if (array[i] < thirdmin)
thirdmin = array[i];
}
cout << "First min = " << firstmin << "\n";
cout << "Second min = " << secmin << "\n";
cout << "Third min = " << thirdmin << "\n";
}
// Driver code
int main()
{
int array[] = {4, 9, 1, 32, 12};
int n = sizeof(array) / sizeof(array[0]);
Print3Smallest(array, n);
return 0;
}
Java
// Java program to find the first, second
// and third minimum element in an array
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++)
{
/* Check if current element is less than
firstmin, then update first, second and
third */
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
/* Check if current element is less than
secmin then update second and third */
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
/* Check if current element is less than
then update third */
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 );
}
// Driver code
public static void main(String[] args)
{
int array[] = {4, 9, 1, 32, 12};
int n = array.length;
Print3Smallest(array, n);
}
}
// This code is contributed by
// Sam007
Python3
# A Python program to find the first,
# second and third minimum element
# in an array
MAX = 100000
def Print3Smallest(arr, n):
firstmin = MAX
secmin = MAX
thirdmin = MAX
for i in range(0, n):
# Check if current element
# is less than firstmin,
# then update first,second
# and third
if arr[i] < firstmin:
thirdmin = secmin
secmin = firstmin
firstmin = arr[i]
# Check if current element is
# less than secmin then update
# second and third
elif arr[i] < secmin:
thirdmin = secmin
secmin = arr[i]
# Check if current element is
# less than,then upadte third
elif arr[i] < thirdmin:
thirdmin = arr[i]
print("First min = ", firstmin)
print("Second min = ", secmin)
print("Third min = ", thirdmin)
# driver program
arr = [4, 9, 1, 32, 12]
n = len(arr)
Print3Smallest(arr, n)
# This code is contributed by Shrikant13.
C#
// C# program to find the first, second
// and third minimum element in an array
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++)
{
/* Check if current element is less than
firstmin, then update first, second and
third */
if (array[i] < firstmin)
{
thirdmin = secmin;
secmin = firstmin;
firstmin = array[i];
}
/* Check if current element is less than
secmin then update second and third */
else if (array[i] < secmin)
{
thirdmin = secmin;
secmin = array[i];
}
/* Check if current element is less than
then update third */
else if (array[i] < thirdmin)
thirdmin = array[i];
}
Console.WriteLine("First min = " + firstmin );
Console.WriteLine("Second min = " + secmin );
Console.WriteLine("Third min = " + thirdmin );
}
// Driver code
static void Main()
{
int []array = new int[]{4, 9, 1, 32, 12};
int n = array.Length;
Print3Smallest(array, n);
}
}
// This code is contributed by Sam007
PHP
Javascript
输出:
First min = 1
Second min = 4
Third min = 9