Viết chương trình C++ để tìm các phần tử nhỏ thứ hai trong một mảng các số nguyên đã cho

int   a[20], b[20], n, sml=0, pos, i, j, temp  ;
printf(" Nhập số lượng cụm từ. ") ;
scanf("%d ", & n) ;
printf("\n Nhập cụm từ. \n") ;
cho (  i = 1 ; i < = n ; i++ )
{

scanf("%d ", & a[i]) ;
b[i] = a[i] ;

}
cho (  i = 1 ; i < = n ; i++ )
{

cho (  j = 1 ; j < = n ; j++ )
{

if ( a[i] <= a[j] ){
{

temp = a[i] ;
a[i] = a[j] ;
a[j] = temp ;

}

}

}
printf("\n Các phần tử mảng là. \n") ;
cho (  i = 1 ; i < = n ; i++ )
printf(" %d \t", b[i])

printf("\n Phần tử nhỏ thứ hai là. %d", a[2]) ;
printf("\n Phần tử lớn thứ hai là. %d", a[n-1]) ;
return ( 0 ) ;

}

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tìm phần tử nhỏ thứ hai và lớn thứ hai trong một mảng. Nhưng trước khi tiếp tục nếu bạn chưa quen với khái niệm mảng trong C thì hãy xem bài viết về Mảng trong C

Viết chương trình C++ để tìm các phần tử nhỏ thứ hai trong một mảng các số nguyên đã cho

Phần tử nhỏ thứ hai và lớn thứ hai trong một mảng có thể được tìm thấy theo ba cách sau

Phương pháp 1. Bằng cách sắp xếp các phần tử theo thứ tự giảm dần rồi hiển thị phần tử nhỏ thứ hai và lớn thứ hai trong mảng

Phương pháp 2. Bằng phương pháp duyệt. Trong lần duyệt đầu tiên, phần tử nhỏ nhất/lớn nhất được tìm thấy. Trong lần duyệt thứ hai, phần tử nhỏ nhất/lớn nhất bị bỏ qua và phần tử nhỏ nhất/lớn nhất tiếp theo được tìm thấy

Phương pháp 3. Trong một lần duyệt, tìm phần tử nhỏ nhất/lớn thứ hai

chương trình 1. Để tìm phần tử nhỏ nhất và lớn thứ hai trong một mảng

Đây là cách tiếp cận đơn giản nhất để tìm phần tử lớn thứ hai và nhỏ thứ hai trong một mảng. Đầu tiên, mảng được sắp xếp theo thứ tự giảm dần và sau đó phần tử nhỏ thứ hai và lớn thứ hai được in ra

thuật toán

  1. Bắt đầu
  2. Khai báo một mảng
  3. Yêu cầu người dùng khởi tạo mảng
  4. Sắp xếp mảng theo thứ tự giảm dần bằng cách so sánh và đổi chỗ
  5. In phần tử nhỏ thứ hai và lớn thứ hai i. e. , phần tử chỉ mục cuối cùng thứ hai và thứ hai
  6. Dừng lại

Dưới đây là mã cho cùng

#include <stdio.h>

int main()
{
    int n;
    printf("Enter the number of elements:");
    scanf("%d",&n);
    printf("Enter the array elements :");
    int a[n];                    //Array Declaration
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++)         //Sorting Array
    {
        int temp;
        for(int j=i+1; j<n ;j++)
        {
            if(a[i]<a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    printf("The second smallest element is %d",a[n-2]);   //Accessing the smallest element
    printf("\n");
    printf("The second largest element is %d",a[1]);      //Accessing the largest element
    return 0;
}


Nhập số phần tử. 5
Nhập các phần tử của mảng. 3 5 8 9 7
Phần tử nhỏ thứ hai là 5
Phần tử lớn thứ hai là 8

chương trình 2. Để tìm phần tử nhỏ nhất và lớn thứ hai trong một mảng

Để tìm phần tử nhỏ thứ hai và lớn thứ hai trong một mảng, chúng ta có thể duyệt qua mảng hai lần. Lần duyệt thứ nhất ta sẽ tìm phần tử nhỏ nhất và lớn nhất rồi ở lần duyệt thứ hai sẽ tìm ra phần tử nhỏ thứ hai và lớn thứ hai

thuật toán

  1. Bắt đầu
  2. Khai báo một mảng
  3. Yêu cầu người dùng khởi tạo mảng
  4. Tìm giá trị nhỏ nhất đầu tiên và giá trị lớn nhất đầu tiên trong mảng trong lần duyệt đầu tiên
  5. Tìm phần tử nhỏ thứ hai và lớn thứ hai trong mảng trong lần duyệt tiếp theo
  6. Hiển thị phần tử nhỏ thứ hai và lớn thứ hai
  7. Dừng lại

Dưới đây là mã cho cùng

#include <stdio.h>

int secondSmallest(int a[],int n)
{
    int min = a[0];
    int secondMin = a[1] ;
    for(int i = 0; i < n; i++)     //First-time Array Traversal
    {
       if(a[i] < min)
       {
          secondMin = min;
          min = a[i];
        }
    }
    for(int i = 0; i < n; i++)      //Second-time Array Traversal
    {
       if(a[i] < secondMin && a[i] != min)
       {
          secondMin = a[i];
        }
    }
  return secondMin;               //Return the second smallest element
}
int secondLargest(int a[],int n)
{
    int max = a[0];
    int secondMax = a[1] ;
    for(int i = 0; i < n; i++)     //First-time Array Traversal
    {
       if(a[i] > max)
       {
          secondMax = max;
          max = a[i];
        }
    }
    for(int i = 0; i < n; i++)     //Second-time Array Traversal
    {
       if(a[i] > secondMax && a[i] != max)
       {
          secondMax = a[i];
        }
    }
  return secondMax;                //Return the second largest element
}
int main()
{
    int n;
    printf("Enter the number of elements:");
    scanf("%d",&n);
    printf("Enter the array elements :");
    int a[n];                      //Array Declaration
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    if(n<2)
    {
        printf("Invalid Input");
    }
    else
    {
       int sS=secondSmallest(a,n);
       printf("The second smallest element is %d",sS);
       printf("\n");
       int sL=secondLargest(a,n);
       printf("The second largest element is %d",sL);
    }
    return 0;
}


Nhập số phần tử. 5
Nhập các phần tử của mảng. 98 67 45 52 90
Phần tử nhỏ thứ hai là 52
Phần tử lớn thứ hai là 90

chương trình 3. Để tìm phần tử nhỏ nhất và lớn thứ hai trong một mảng

Đây là cách hiệu quả nhất để tìm phần tử nhỏ thứ hai và lớn thứ hai trong một mảng. Trước tiên, trong một lần duyệt đơn, hãy tìm phần tử nhỏ nhất và lớn nhất, sau đó bỏ qua nó và tìm phần tử nhỏ nhất và lớn nhất tiếp theo trong mảng

Làm cách nào để tìm phần tử nhỏ nhất trong một mảng trong C?

THUẬT TOÁN. .
BƯỚC 1. BẮT ĐẦU
BƯỚC 2. KHỞI TẠO mảng[] = {25, 11, 7, 75, 56}
BƯỚC 3. chiều dài = sizeof(arr)/sizeof(arr[0])
BƯỚC 4. tối thiểu = mảng [0]
BƯỚC 5. ĐẶT tôi = 0. LẶP LẠI BƯỚC 6 và BƯỚC 7 CHO ĐẾN KHI i<độ dài
BƯỚC 6. if(arr[i]
BƯỚC 7. tôi=i+1
BƯỚC 8. IN "Phần tử nhỏ nhất có trong mảng đã cho. " bằng cách chỉ định tối thiểu

Làm cách nào để tìm phần tử lớn thứ 2 trong một mảng trong C?

Thuật toán .
Bước 1 - Khai báo và đọc số phần tử
Bước 2 - Khai báo và đọc kích thước mảng khi chạy
Bước 3 - Nhập các phần tử mảng
Bước 4 – Sắp xếp các số theo thứ tự giảm dần
Bước 5 - Sau đó, tìm số lớn thứ hai và nhỏ thứ hai bằng cách sử dụng chỉ số

Làm cách nào để tìm số lớn thứ hai và nhỏ thứ hai trong một mảng?

Báo cáo sự cố. Cho một mảng, tìm phần tử nhỏ thứ hai và lớn thứ hai trong mảng. .
Sắp xếp mảng tăng dần
Phần tử có mặt tại chỉ số thứ hai là phần tử nhỏ thứ hai
Phần tử có mặt ở chỉ mục thứ hai từ cuối là phần tử lớn thứ hai

Làm cách nào để tìm số lớn thứ hai và nhỏ thứ hai trong mảng trong C?

Thuật toán .
Bắt đầu
Khai báo một mảng
Yêu cầu người dùng khởi tạo mảng
Khởi tạo min, second_min, max, second_max là phần tử đầu tiên của mảng
Bắt đầu duyệt mảng và gán phần tử nhỏ nhất và lớn nhất tương ứng là min và max. .
In phần tử nhỏ thứ hai và lớn thứ hai