Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm phần tử nhỏ thứ hai trong số n phần tử có ràng buộc về độ phức tạp

Đây là một chương trình C ++ để tìm Phần tử nhỏ thứ hai trong số n phần tử với ràng buộc phức tạp nhất định.

Thuật toán

Begin
   function SecondSmallest() :
      /* Arguments to this function are:
         A pointer array a.
         Number of elements n
      */
   // Body of the function:
      A variable s1 is declared as to keep track of smallest number.
      A variable s2 is declared as to keep track of second smallest number.
      Initialize both s1 and s2 with INT_MAX.
      Traverse the data array using iteration.
      If current array element is lesser than current value in s1, then s2 = s1 and s1 =
         current array element.
         Else if array element is in between s1 and s2,
            then s2 = current array element.
         if(s2==INT_MAX)
            Print “no second smallest element is present".
         else
      Print s2 as second smallest element.
End

Ví dụ

#include<iostream>
#include <climits> //for INT_MAX
using namespace std;
int SecondSmallest(int *a, int n) {
   int s1, s2, i,t;
   //initialize s1 and s2
   s1 =INT_MAX;
   s2=INT_MAX;
   for(i = 0; i < n; i++) {
      //If current element is smaller than s1
      if(s1 > a[i]) {
         //update s1 and s2
         s2 = s1;
         s1 = a[i];
      }
      //if a[i] is in between s1 and s2
      else if(s2 > a[i] && a[i]!=s1) {
         //update only s2
         s2 = a[i];
      }
   }
   if(s2==INT_MAX)
      cout<<"no second smallest element is present";
   else
      cout<<"Second smallest element is:"<<s2;
}
int main() {
   int n, i;
   cout<<"Enter the number of elements: ";
   cin>>n;
   int array[n];
   for(i = 0; i < n; i++) {
      cout<<"Enter "<<i+1<< " "<<"element: ";
      cin>>array[i];
   }
   SecondSmallest(array, n); //call the function
   return 0;
}

Đầu ra

Enter the number of elements: 5
Enter 1 element: 1
Enter 2 element: 2
Enter 3 element: 1
Enter 4 element: 3
Enter 5 element: 4
Second smallest element is:2