II. MẢNG (LIST) - "DÃY NGĂN KÉO CHỨA ĐỒ"
Phần 2: Quản lý và xử lý dữ liệu tập trung - Đội tuyển HSG Phan Chu Trinh
Mảng là cấu trúc dữ liệu quan trọng nhất giúp chúng ta lưu trữ hàng triệu giá trị chỉ với một tên biến duy nhất.
Ví dụ 2: Quản lý điểm số
Đề bài: Cho danh sách điểm của n học sinh. Tìm điểm cao nhất và đếm xem có bao nhiêu bạn đạt số điểm đó.
Đề bài: Cho danh sách điểm của n học sinh. Tìm điểm cao nhất và đếm xem có bao nhiêu bạn đạt số điểm đó.
1. Mã nguồn Python tối ưu
# Cách 1: Sử dụng các hàm xây dựng sẵn (Built-in)
def thong_ke_diem(ds_diem):
diem_max = max(ds_diem)
so_luong = ds_diem.count(diem_max)
return diem_max, so_luong
# Cách 2: Duyệt một vòng lặp (Tối ưu nhất cho dữ liệu lớn)
def tim_max_va_dem(ds_diem):
m = -1
c = 0
for x in ds_diem:
if x > m:
m = x; c = 1
elif x == m:
c += 1
return m, c
def thong_ke_diem(ds_diem):
diem_max = max(ds_diem)
so_luong = ds_diem.count(diem_max)
return diem_max, so_luong
# Cách 2: Duyệt một vòng lặp (Tối ưu nhất cho dữ liệu lớn)
def tim_max_va_dem(ds_diem):
m = -1
c = 0
for x in ds_diem:
if x > m:
m = x; c = 1
elif x == m:
c += 1
return m, c
Phân tích thuật toán:
- Kiến thức: Truy xuất A[i], hàm
max(),count(). - Tư duy: Gom nhóm dữ liệu. Thay vì xử lý rời rạc, ta xử lý trên một tập hợp thống nhất.
- Độ phức tạp: $O(n)$. Với 1 triệu học sinh ($n=10^6$), Python chỉ mất khoảng 0.1s.
📊 MÔ PHỎNG QUẢN LÝ ĐIỂM HỌC SINH
Nhập số lượng học sinh bạn muốn giả lập (N):
Điểm cao nhất
--
Số bạn đạt được
--
Thời gian xử lý
--
3. Bài học về kỹ năng
Khi làm việc với mảng trong thi HSG Tin học, hãy luôn ưu tiên các hàm có sẵn của Python như sum(), max(), min(), sort() vì chúng được viết bằng ngôn ngữ C, giúp chương trình chạy nhanh hơn nhiều so với việc tự viết vòng lặp thủ công.
📌 Danh sách bình luận