You are on page 1of 3

Câu 2: PHÂN TÍCH ĐỘ PHỨC TẠP

Linear Search:

Thuật toán tìm kiếm tuyến tính (linear search) được thể hiện trong hàm
TimKiemTuyenTinh. Độ phức tạp của thuật toán này phụ thuộc vào kích
thước của mảng đầu vào A[ ] và vị trí của phần tử cần tìm x.
Trong trường hợp tốt nhất, khi phần tử cần tìm là phần tử đầu tiên của
mảng, hoặc nếu không có phần tử nào trong mảng thỏa mãn điều kiện, thuật
toán chỉ cần một lần duyệt qua mảng, do đó có độ phức tạp là O(1).
Trong trường hợp xấu nhất, khi phần tử cần tìm là phần tử cuối cùng
của mảng hoặc không có trong mảng, thuật toán sẽ phải duyệt qua tất cả các
phần tử của mảng, có độ phức tạp là O(n), trong đó n là số lượng phần tử
trong mảng.
Do đó, độ phức tạp của thuật toán tìm kiếm tuyến tính là O(n).
Binary Search:

Thuật toán được thể hiện trong hàm TimKiemNhiPhan là thuật toán tìm
kiếm nhị phân (binary search). Độ phức tạp của thuật toán này phụ thuộc vào
kích thước của mảng đầu vào A[ ].
Thuật toán này hoạt động trong một vòng lặp while, trong đó ta chia
nhỏ khoảng cần tìm kiếm thành hai phần và so sánh giá trị cần tìm với phần
tử ở giữa của khoảng đó. Dựa vào kết quả so sánh này, ta sẽ thu hẹp phạm vi
tìm kiếm cho đến khi tìm thấy phần tử hoặc khi không còn phần tử nào để
kiểm tra.
Trong mỗi vòng lặp, ta thực hiện một số lượng hằng định các phép toán
cố định: lấy giá trị trung bình của biên trái và biên phải, so sánh giá trị tại vị
trí giữa với giá trị cần tìm và cập nhật giá trị của biên trái hoặc biên phải. Các
phép toán này đều có độ phức tạp O(1).
Vì mỗi lần lặp, phạm vi cần tìm kiếm giảm đi một nửa, nên số lần lặp
cần thiết để thuật toán kết thúc sẽ là log ₂(n), trong đó n là kích thước của
mảng.
Do đó, độ phức tạp của thuật toán tìm kiếm nhị phân là O(log n).

Tóm lại:
Linear Search:
Độ phức tạp trong trường hợp xấu nhất (Worst-case complexity): O(n),
với n là số lượng phần tử trong mảng.
Độ phức tạp trong trường hợp trung bình (Average-case complexity):
O(n/2).
Độ phức tạp trong trường hợp tốt nhất (Best-case complexity): O(1),
khi phần tử cần tìm nằm ở vị trí đầu tiên của mảng.
Binary Search:
Độ phức tạp trong trường hợp xấu nhất (Worst-case complexity): O(log
n), với n là số lượng phần tử trong mảng.
Độ phức tạp trong trường hợp trung bình (Average-case complexity):
O(log n).
Độ phức tạp trong trường hợp tốt nhất (Best-case complexity): O(1),
khi phần tử cần tìm nằm ở chính giữa mảng.

You might also like