📌  相关文章
📜  在数组中找到第一个,第二个和第三个最小元素

📅  最后修改于: 2021-04-24 22:21:05             🧑  作者: Mango

在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