Professional Documents
Culture Documents
Nội dung
Giới thiệu:
01 Đếm phân phối là gì?
Bài toán 1:
02 Số lần xuất hiện
Bài toán 2:
03 Sắp xếp đếm
04 Bài tập
01
Giới thiệu
ĐẾM PHÂN PHỐI
Đếm phân phối là một kỹ thuật giải quyết các
bài toán liên quan đến việc đếm số lần xuất
hiện của các giá trị cụ thể trong dữ liệu.
02
Bài toán 1
Bài toán 1: Số lần xuất hiện
1 2 3 4 5 6 7
10 30 0
3 0
1 0
1 0 10
1 2 3 4 5 6 7 8 9 10 11
1 3 2 2 5 3 4 7 1 2 3
Đến đây, ta chỉ cần duyệt lại dãy và in ra từng giá trị cùng với giá trị của nó trong mảng đếm. Độ phức
tạp của thuật toán là .
Cài đặt thuật toán
n = int(input())
a = list(map(int, input().split()))
for x in a:
print(x, cnt[x])
03
Bài toán 2
Bài toán 2: Sắp xếp đếm
Ví dụ, . Ta phải in ra .
Phân tích thuật toán
Sử dụng thuật toán của bài toán trước, giờ ta sẽ duyệt trên mảng đếm này theo thứ tự tăng dần. Với mỗi
phần tử, ta sẽ in ra vị trí của nó với số lần đúng bằng giá trị của phần tử đó. Lúc này, ta sẽ có được dãy
sau khi đã sắp xếp không giảm.
1 2 3 4 5 6 7
1 3 3 1 1 0 1
1 2 3 4 5 6 7 8 9 10 11
1 3
1 2 2 25 3 34 37 41 2
5 3
7
Độ phức tạp của thuật toán là . Đây là một thuật toán rất phổ biến khi nhắc đến thuật toán sắp xếp trong
thời gian tuyến tính.
Cài đặt thuật toán
n = int(input())
a = list(map(int, input().split()))