Cách tìm số lớn thứ hai trong mảng trong shell script

Khi chúng ta có nhiều phần tử trong danh sách của mình, ý nghĩ tìm phần tử cao nhất hoặc thấp nhất có thể xuất hiện trong đầu chúng ta và Python đã giúp chúng ta dễ dàng hơn nhiều

Trong bài viết này, chúng ta sẽ tìm hiểu cách chúng ta có thể sử dụng để tìm số lớn thứ hai trong Python từ một danh sách

  1. Sắp xếp danh sách và sau đó in số cuối cùng thứ hai
  2. Loại bỏ phần tử tối đa
  3. Tìm phần tử lớn nhất
  4. Duyệt qua danh sách

Chúng ta hãy xem cách tiếp cận đầu tiên-

Sắp xếp danh sách và sau đó in số cuối cùng thứ hai

Chương trình sau minh họa cách chúng ta có thể làm điều đó trong Python-

Ví dụ -

đầu ra

The second largest element of the list is: 30

Đã đến lúc đi đến phần giải thích-

  1. Chúng tôi đã khai báo danh sách mà chúng tôi muốn lấy ra phần tử cuối cùng thứ hai
  2. Sau này, chúng tôi đã sử dụng phương pháp sắp xếp để tất cả các phần tử trong danh sách của chúng tôi được sắp xếp theo thứ tự tăng dần
  3. Bây giờ chúng tôi sử dụng lập chỉ mục phủ định vì số lớn thứ hai sẽ đứng ở vị trí cuối cùng thứ hai

Phương pháp thứ hai là lấy phần tử lớn thứ hai của danh sách bằng cách loại bỏ phần tử lớn nhất

Hãy để chúng tôi xem làm thế nào chúng ta có thể làm điều đó

Loại bỏ phần tử tối đa

Ví dụ -

đầu ra

Giải trình -

Hãy cho chúng tôi hiểu những gì chúng tôi đã làm trong chương trình trên-

  1. Chúng tôi đã khai báo danh sách mà chúng tôi muốn lấy ra phần tử cuối cùng thứ hai
  2. Sau đó, chúng tôi đã sử dụng phương thức set để lấy tất cả các phần tử duy nhất của danh sách
  3. Bây giờ chúng tôi sử dụng max[] để lấy giá trị lớn nhất từ ​​​​danh sách và sau đó loại bỏ nó
  4. Sau đó, chúng tôi in tối đa danh sách kết quả sẽ cung cấp cho chúng tôi số lớn thứ hai

Trong phương pháp thứ ba, chúng ta sẽ sử dụng vòng lặp for và tìm số lớn thứ hai trong danh sách

Ví dụ -

đầu ra

Enter number of elements in list: 5

Enter the elements: 10

Enter the elements: 20

Enter the elements: 30

Enter the elements: 40

Enter the elements: 50
The second largest element is: 40

Giải trình -

Hãy để chúng tôi xem qua những gì chúng tôi đã làm ở đây-

  1. Chúng tôi đã khai báo một danh sách trống trong đó chúng tôi sẽ chèn các phần tử
  2. Sau đó, chúng tôi yêu cầu người dùng cung cấp cho chúng tôi số lượng phần tử mà chúng tôi muốn thêm vào danh sách của mình
  3. Sau đó, chúng tôi sử dụng phương pháp sắp xếp để tất cả các phần tử trong danh sách của chúng tôi được sắp xếp theo thứ tự tăng dần
  4. Bây giờ chúng tôi sử dụng lập chỉ mục phủ định vì số lớn thứ hai sẽ đứng ở vị trí cuối cùng thứ hai

Duyệt qua danh sách

Trong chương trình cuối cùng, chúng ta sẽ duyệt qua danh sách để tìm ra số lớn nhất và sau đó sử dụng các câu lệnh điều kiện để tìm số lớn thứ hai trong danh sách

Chương trình sau đây minh họa tương tự-

Ví dụ -

đầu ra

Giải trình -

Hãy cho chúng tôi hiểu những gì chúng tôi đã làm trong chương trình trên-

  1. Bước đầu tiên là tạo một hàm kiểm tra số lớn nhất trong danh sách bằng cách duyệt qua nó
  2. Trong vòng lặp for tiếp theo, chúng tôi duyệt lại danh sách để tìm số cao nhất nhưng lần này loại trừ số trước đó vì ở đây mục tiêu của chúng tôi là tìm hàm lớn thứ hai
  3. Cuối cùng, chúng tôi chuyển danh sách của mình vào hàm

Vì vậy, trong bài viết này, chúng ta đã có cơ hội suy nghĩ sáng tạo và khám phá một số cách mới để phát triển logic tìm số lớn thứ hai trong Python

Trước khi kiểm tra giải pháp, hãy suy nghĩ một chút, làm thế nào để bạn tiếp cận vấn đề này? . Bạn thích cách tiếp cận nào hơn và tại sao?

Trong hướng dẫn này, tôi sẽ đề cập đến các chủ đề sau -

  • Cách tìm số lớn thứ hai trong một mảng bằng cách sắp xếp
  • Chương trình C để tìm số lớn thứ hai trong một mảng
  • Chương trình C++ để tìm số lớn thứ hai trong một mảng

Tìm số lớn thứ hai trong một mảng bằng cách sắp xếp

Cách tiếp cận đơn giản là sắp xếp một mảng bằng thuật toán sắp xếp. Sau khi sắp xếp một phần tử mảng tại n-2 chỉ số sẽ là số lớn thứ hai

Để sắp xếp một mảng, chúng ta có thể sử dụng các thuật toán sắp xếp sau

i] Sắp xếp lựa chọn

ii] Sắp xếp chèn

iii] Sắp xếp bong bóng

iv] Hợp nhất sắp xếp

v] Sắp xếp nhanh

Sắp xếp lựa chọn, Sắp xếp chèn và sắp xếp bong bóng không phù hợp với các tập dữ liệu lớn vì độ phức tạp về thời gian của chúng là O[n2]. Chúng ta có thể sử dụng Sắp xếp hợp nhất hoặc Sắp xếp nhanh cho các tập dữ liệu lớn. Độ phức tạp về thời gian của sắp xếp trộn và sắp xếp nhanh là O[nlogn]

LƯU Ý –  Nếu  phần tử của một mảng bị lặp lại thì phương pháp này sẽ không hiệu quả. Sau đó, cách tiếp cận tốt nhất là duyệt qua một mảng để tìm phần tử cao thứ hai

Tìm số cao thứ hai trong một mảng bằng vòng lặp đơn

Cách tiếp cận tốt nhất là truy cập từng phần tử của một mảng để tìm số cao thứ hai trong mảng có trùng lặp. Độ phức tạp thời gian của phương pháp này là O[n]

thuật toán

i] Khai báo hai biến max và second max và khởi tạo chúng với giá trị nguyên nhỏ nhất có thể

ii] Duyệt mảng và so sánh từng phần tử của mảng với giá trị được gán cho biến max. Nếu phần tử hiện tại lớn hơn giá trị được gán ở biến max. Sau đó làm hai việc -

a] Trong biến max thứ hai, hãy gán giá trị có tại biến max

b] Trong biến max, gán giá trị chỉ số hiện tại

iii] Chúng ta phải thực hiện thêm một phép so sánh nếu giá trị chỉ số hiện tại nhỏ hơn giá trị tối đa và lớn hơn giá trị được chỉ định ở giá trị tối đa thứ hai. Sau đó, gán giá trị chỉ mục hiện tại ở biến tối đa thứ hai

Sau khi hoàn thành lặp in phần tử tối đa thứ hai của một mảng

Chương trình C để tìm số lớn thứ hai trong một mảng

Java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

# bao gồm

 

int thứ haiLớn nhất[int arr[], int len] {

 

   //Khởi tạo

    int max        = INT_MIN;

    int second_max = INT_MIN;

     cho[int i = 0; i max] {

              second_max = max;

              tối đa = mảng[i];

          }

          if[tối đa > arr[i] && arr[i] > second_max] {

               second_max=arr[i];

           }

      }

      return second_max;

}

 

int chính[void] {

 

     int arr[] = {70, 4, 8, 10, 14, 9, 7, 6, 5, 3, 2};

     int len   = 11;

      printf["Phần tử cao thứ hai là %d\n",secondLargest[arr,len]];

      trả lại 0;

}

Chương trình C++ để tìm số lớn thứ hai trong một mảng

Chúng tôi đã viết mã c để tìm số lớn thứ hai trong một mảng chưa sắp xếp. Hãy viết mã c ++ để tìm số cao thứ hai trong một mảng

Java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

# bao gồm

 

sử dụng không gian tên std;

 

int main[] {

 

    int n, i;

    cout n;

    

    int arr[n];

    

    cout

Chủ Đề