Danh mục: 54 Học Python – Tìm số nguyên nhỏ thứ 3 trong mảng mới nhất

54 Học Python – Tìm số nguyên nhỏ thứ 3 trong mảng mới nhất

Bài 54: Tìm số nguyên nhỏ thứ 3 trong mảng bằng Python

Giới Thiệu

Trong bài viết này, chúng ta sẽ viết chương trình Python để tìm số nguyên nhỏ thứ 3 trong một mảng số nguyên.

Khuyến mãi lớn thêm danh sách 10 bài tập python rèn luyện kỹ năng và nâng cao tay nghề:

  1. Bài 51 : Tính trung bình các số nguyên tố trong mảng bằng Python
  2. Bài 52: Tìm số âm lớn nhất trong mảng bằng Python
  3. Bài 53: Tìm số nguyên lớn nhì trong mảng bằng Python
  4. Bài 54: Tìm số nguyên nhỏ thứ 3 trong mảng bằng Python
  5. Bài 55: Đếm số lượng số nguyên khác nhau trong mảng bằng Python
  6. Bài 56: Đếm số lần xuất hiện của từng số trong mảng bằng Python
  7. Bài 57: Tìm số nguyên xuất hiện nhiều lần nhất trong mảng bằng Python
  8. Bài 58 Tính trung bình cộng các số chính phương trong mảng bằng Python
  9. Bài 59: In ra câu “Chao HoTen” bằng Python
  10. Bài 60: Viết xâu theo thứ tự ngược lại bằng Python

Cách Thực Hiện

  1. Duyệt qua tất cả các phần tử trong mảng.
  2. Xác định số nhỏ nhất, số nhỏ nhì và số nhỏ thứ ba.
  3. Trả về số nhỏ thứ ba.

Chương Trình Python

Cách 1: Sử dụng danh sách và hàm sorted()

 

# Hàm tìm số nhỏ thứ 3 trong mảng

def tim_so_nho_thu_ba(mang):

    if len(mang) < 3:

        return None  # Không đủ số lượng phần tử

   

    mang_khong_trung = sorted(set(mang))  # Sắp xếp và loại bỏ số trùng lặp

   

    return mang_khong_trung[2] if len(mang_khong_trung) >= 3 else None




# Nhập số lượng phần tử của mảng

n = int(input("Nhập số phần tử của mảng: "))

mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]




# Tìm số nhỏ thứ 3

so_nho_thu_ba = tim_so_nho_thu_ba(mang)

print("Số nguyên nhỏ thứ 3 trong mảng:", so_nho_thu_ba)

 

Cách 2: Tối ưu hóa bằng vòng lặp duy nhất

 

# Hàm tìm số nhỏ thứ 3 tối ưu

def tim_so_nho_thu_ba_toi_uu(mang):

    if len(mang) < 3:

        return None  # Không đủ số lượng phần tử

   

    so_nho_nhat = so_nho_nhi = so_nho_thu_ba = float('inf')

   

    for so in mang:

        if so < so_nho_nhat:

            so_nho_thu_ba, so_nho_nhi, so_nho_nhat = so_nho_nhi, so_nho_nhat, so

        elif so_nho_nhat < so < so_nho_nhi:

            so_nho_thu_ba, so_nho_nhi = so_nho_nhi, so

        elif so_nho_nhi < so < so_nho_thu_ba:

            so_nho_thu_ba = so

   

    return so_nho_thu_ba if so_nho_thu_ba != float('inf') else None




# Nhập số lượng phần tử của mảng

n = int(input("Nhập số phần tử của mảng: "))

mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]




# Tìm số nhỏ thứ 3

so_nho_thu_ba = tim_so_nho_thu_ba_toi_uu(mang)

print("Số nguyên nhỏ thứ 3 trong mảng:", so_nho_thu_ba)

 

So Sánh Hai Cách

Phương phápĐộ phức tạpƯu điểmNhược điểm
Dùng sorted() + set()O(n log n)Code ngắn gọn, dễ hiểuHiệu suất thấp hơn khi mảng lớn
Vòng lặp duy nhấtO(n)Tối ưu hơn về hiệu suất và bộ nhớCần nhiều dòng code hơn

Ví Dụ Chạy Chương Trình

Nhập số phần tử của mảng: 6

Nhập phần tử thứ 1: 10

Nhập phần tử thứ 2: 20

Nhập phần tử thứ 3: 5

Nhập phần tử thứ 4: 8

Nhập phần tử thứ 5: 12

Nhập phần tử thứ 6: 15

Số nguyên nhỏ thứ 3 trong mảng: 10

Kết Luận

Bài viết đã hướng dẫn cách tìm số nguyên nhỏ thứ 3 trong mảng bằng hai phương pháp:

  • Cách cơ bản: Dùng sorted() và set(), dễ hiểu nhưng có độ phức tạp cao hơn.
  • Cách tối ưu: Dùng vòng lặp duy nhất để tìm trực tiếp, giúp tiết kiệm bộ nhớ và tăng hiệu suất.

Hy vọng bài viết hữu ích cho bạn!

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao