Font size
WorksheetsQuiz về Thuật Toán
Total questions: 105
Worksheet time: 53mins
Thuật toán là
chương trình máy tính
dãy hữu hạn các bước xác định để giải bài toán
phần cứng máy tính
dữ liệu đầu vào
Tính xác định của thuật toán nghĩa là
luôn cho kết quả đúng
mỗi bước được mô tả rõ ràng, không mơ hồ
có thể chạy song song
không cần dữ liệu vào
Tính dừng của thuật toán là
có thể lặp vô hạn
có số bước hữu hạn và kết thúc
chạy nhanh
dễ lập trình
Đầu vào của thuật toán là
kết quả
chương trình
dữ liệu ban đầu
thiết bị
Đầu ra của thuật toán là
dữ liệu ban đầu
kết quả bài toán
mã nguồn
sơ đồ khối
Biểu diễn thuật toán bằng ngôn ngữ tự nhiên có nhược điểm
khó hiểu
mơ hồ
không trực quan
không dùng được
Sơ đồ khối giúp
chạy nhanh hơn
giảm bộ nhớ
trực quan, dễ hiểu
thay thế chương trình
Khối hình thoi biểu diễn
xử lí
nhập/xuất
rẽ nhánh điều kiện
bắt đầu/kết thúc
Thuật toán đúng đắn khi
có nhiều bước
cho kết quả đúng với mọi dữ liệu hợp lệ
chạy nhanh
dùng ít biến
Thuật toán sai khi
chạy chậm
cho kết quả không đúng
dài
phức tạp
Biểu diễn thuật toán bằng giả mã giúp
chạy trực tiếp
mô tả gần ngôn ngữ lập trình
giảm dữ liệu
thay thế sơ đồ khối
Thuật toán cần có
đầu vào
đầu ra
các bước xử lí
tất cả đáp án trên
Một thuật toán có thể
không dừng
dừng vô hạn
dừng sau số bước hữu hạn
không cần đầu ra
Thuật toán giải bài toán là
mô tả cách làm
kết quả
dữ liệu
thiết bị
Biểu diễn nào dễ trao đổi, thảo luận
mã máy
giả mã
ngôn ngữ máy
phần cứng
Thuật toán có tính phổ dụng khi
dùng cho mọi bài toán
dùng cho lớp bài toán cùng dạng
chỉ cho 1 trường hợp
không cần
Thuật toán có tính phổ dụng khi
dùng cho mọi bài toán
dùng cho lớp bài toán cùng dạng
chỉ cho 1 trường hợp
không cần dữ liệu
Số bước của thuật toán phải
vô hạn
hữu hạn
tùy ý
không quan trọng
Thuật toán khác chương trình ở điểm
không có bước
độc lập ngôn ngữ lập trình
không cần máy tính
không có đầu vào
Mô tả thuật toán bằng lời dễ
chính xác tuyệt đối
gây mơ hồ
lập trình ngay
chạy nhanh
Thuật toán tốt là
ngắn
dễ hiểu
hiệu quả
cả A, B, C
Thuật toán không phụ thuộc
dữ liệu
bài toán
ngôn ngữ lập trình
kết quả
Bước xử lí là
nhập dữ liệu
phép toán, so sánh
xuất kết quả
kết thúc
Thuật toán luôn cần
máy tính
con người
mô tả logic
phần mềm
Sơ đồ khối bắt đầu/kết thúc là
hình chữ nhật
hình thoi
hình oval
hình bình hành
Thuật toán giúp
giải bài toán hiệu quả
thay thế tư duy
bỏ qua dữ liệu
không cần kiểm tra
Đánh giá thuật toán nhằm
tìm lỗi
so sánh hiệu quả
viết code
lưu dữ liệu
Độ phức tạp thời gian phản ánh
bộ nhớ
số phép tính theo kích thước dữ liệu
ngôn ngữ
CPU
Kí hiệu O(n) nghĩa là
hằng số
tuyến tính
bình phương
lũy thừa
O(1) là
rất chậm
phụ thuộc n
không phụ thuộc n
tăng nhanh
Trường hợp xấu nhất là
nhanh nhất
trung bình
chậm nhất
ngẫu nhiên
Trường hợp tốt nhất là
chậm nhất
nhanh nhất
trung bình
không xét
Đánh giá độ phức tạp thường xét
dữ liệu cụ thể
kích thước dữ liệu
hệ điều hành
RAM
O(n²) tăng
chậm
tuyến tính
rất nhanh khi n lớn
Đánh giá độ phức tạp thường xét
dữ liệu cụ thể
kích thước dữ liệu
hệ điều hành
RAM
O(n²) tăng
chậm
tuyến tính
rất nhanh khi n lớn
không đổi
Thuật toán tốt hơn với dữ liệu lớn là
O(n³)
O(2ⁿ)
O(n)
O(n²)
Đánh giá thuật toán giúp
chọn thuật toán phù hợp
giảm dữ liệu
thay CPU
bỏ chương trình
Độ phức tạp bộ nhớ phản ánh
số phép tính
dung lượng nhớ sử dụng
tốc độ CPU
băng thông
Big-O dùng để
đo chính xác thời gian
ước lượng xu hướng tăng
đo bộ nhớ vật lí
viết mã
Thuật toán có O(log n) thường
chậm
rất nhanh
rất chậm
không dùng
Đánh giá thuật toán không phụ thuộc
kích thước dữ liệu
cấu trúc dữ liệu
ngôn ngữ lập trình
số phép so sánh
Khi n tăng, O(n²) so với O(n)
chậm hơn
nhanh hơn
bằng nhau
không so sánh
Độ phức tạp trung bình là
nhanh nhất
chậm nhất
trung bình các trường hợp
không xét
O(2ⁿ) thuộc loại
đa thức
tuyến tính
lũy thừa – rất lớn
hằng số
Mục tiêu đánh giá thuật toán là
tối ưu hiệu quả
tăng code
giảm dữ liệu
đổi bài toán
Hai thuật toán cùng O(n) thì
luôn bằng nhau
có thể khác hằng số
không so sánh
luôn nhanh
O(n) tốt hơn O(n²) khi
n nhỏ
n lớn
mọi n
không xét
Big-O bỏ qua
xu hướng tăng
hằng số và bậc thấp
kích thước
số phép
Đánh giá thuật toán giúp
dự đoán khả năng mở rộng
đổi dữ liệu
viết tài liệu
xóa code
Độ phức tạp không dùng để
so sánh
lựa chọn
đo chính xác từng ms
phân tích
Thuật toán O(1)
phụ thuộc n
độc lập n
tăng theo n
giảm theo n
Thuật toán tối ưu là
nhanh nhất với mọi n
phù h
Bài toán tìm kiếm là
sắp xếp
tìm phần tử thỏa điều kiện
sao chép
xóa
Dữ liệu đầu vào gồm
tập dữ liệu và khóa tìm
thuật toán
kết quả
bộ nhớ
Kết quả tìm kiếm là
giá trị lớn nhất
vị trí hoặc không tìm thấy
dãy mới
tổng
Tìm kiếm tuần tự so sánh
ngẫu nhiên
từng phần tử
từ giữa
từ cuối
Trường hợp xấu nhất của tìm kiếm tuần tự
1 so sánh
n/2
n
log n
Tìm kiếm tuần tự phù hợp khi
dữ liệu đã sắp xếp
dữ liệu nhỏ/chưa sắp xếp
dữ liệu lớn
luôn tối ưu
Tìm kiếm nhị phân yêu cầu
dữ liệu ngẫu nhiên
dữ liệu đã sắp xếp
dữ liệu nhỏ
không điều kiện
Ý tưởng tìm kiếm nhị phân
so sánh từng phần tử
chia đôi khoảng tìm
sắp xếp lại
đảo dãy
Độ phức tạp tìm kiếm nhị phân
O(n)
O(n²)
O(log n)
O(1)
Khi dữ liệu lớn, nên dùng
tuần tự
nhị phân (nếu đã sắp xếp)
bất kì
không tìm
Nhược điểm của tìm kiếm nhị phân
chậm
cần sắp xếp trước
khó hiểu
sai
Tìm kiếm trả về vị trí nghĩa là
giá trị
chỉ số phần tử
số lần xuất hiện
khóa
Nếu không tìm thấy, thuật toán thường
dừng vô hạn
báo không tồn tại
trả 0
lỗi
So với tuần tự, nhị phân
luôn chậm hơn
hiệu quả hơn với dữ liệu lớn
không dùng
giống nhau
Tìm kiếm áp dụng trong
danh bạ
tra cứu điểm
tìm tên
tất cả
Tìm kiếm tuần tự không cần
so sánh
sắp xếp
dữ liệu
khóa
Tìm kiếm áp dụng trong
danh bạ
tra cứu điểm
tìm tên
tất cả
Tìm kiếm tuần tự không cần
so sánh
sắp xếp
dữ liệu
khóa
Tìm kiếm nhị phân chia dãy thành
3 phần
2 phần
nhiều phần
không chia
Số bước tìm kiếm nhị phân phụ thuộc
giá trị
vị trí
số phần tử
tên biến
Tìm kiếm dùng khi
cần sắp xếp
cần tra cứu
cần xóa
cần in
Thuật toán tìm kiếm tốt là
đơn giản
nhanh
phù hợp dữ liệu
cả A, B, C
Tìm kiếm tuần tự có O(n) vì
chia đôi
so sánh từng phần tử
không so sánh
hằng số
Tìm kiếm nhị phân bắt đầu so sánh tại
đầu
cuối
giữa
ngẫu nhiên
Nếu khóa nhỏ hơn phần tử giữa
tìm nửa phải
tìm nửa trái
dừng
sai
Nếu khóa lớn hơn phần tử giữa
tìm nửa trái
tìm nửa phải
dừng
lỗi
Tìm kiếm là bài toán cơ bản trong
khoa học máy tính
phần cứng
mạng
đồ họa
Bài toán sắp xếp là
tìm kiếm
sắp xếp theo thứ tự xác định
xóa
sao chép
Thứ tự sắp xếp thường là
ngẫu nhiên
tăng/giảm dần
theo màu
theo bộ nhớ
Sắp xếp giúp
tìm kiếm nhanh hơn
làm đẹp dữ liệu
tăng bộ nhớ
giảm dữ liệu
Bubble Sort hoạt động bằng cách
chọn phần tử nhỏ nhất
so sánh cặp kề nhau
chia đôi
trộn
Độ phức tạp Bubble Sort (xấu nhất)
O(n)
O(log n)
O(n²)
O(1)
Ưu điểm Bubble Sort
rất nhanh
dễ hiểu, dễ cài đặt
tối ưu
dùng cho mọi n
Nhược điểm Bubble Sort
khó hiểu
chậm với dữ liệu lớn
không đúng
không dùng
Selection Sort
chọn phần tử lớn nhất
chọn phần tử nhỏ nhất đưa lên đầu
chia đôi
trộn
Độ phức tạp Selection Sort
O(n)
O(n²)
O(log n)
O(1)
Insertion Sort phù hợp
dữ liệu lớn
dữ liệu gần sắp xếp
mọi dữ liệu
dữ liệu ngẫu nhiên
Mục tiêu sắp xếp là
tăng RAM
tổ chức dữ liệu
giảm CPU
đổi kiểu
Sắp xếp trước khi tìm kiếm giúp
chậm hơn
nhanh hơn
không đổi
sai
Sắp xếp là bài toán
phụ
cơ bản
không quan trọng
hiếm gặp
Sắp xếp tăng dần là
lớn → nhỏ
nhỏ → lớn
ngẫu nhiên
không thứ tự
Sắp xếp giảm dần là
nhỏ → lớn
lớn → nhỏ
không đổi
ngẫu nhiên
Thuật toán sắp xếp đơn giản thường
O(n²)
O(1)
O(log n)
O(n)
Sắp xếp ảnh hưởng đến
hiệu quả xử lí
thẩm mỹ
màu sắc
âm thanh
Sắp xếp áp dụng trong
bảng điểm
danh sách tên
dữ liệu số
tất cả
Thuật toán sắp xếp tốt là
nhanh
đúng
phù hợp dữ liệu
tất cả
Khi n lớn, thuật toán O(n²)
hiệu quả
chậm
tối ưu
không đổi
Sắp xếp giúp
loại bỏ dữ liệu
tra cứu thuận tiện
tăng lỗi
giảm độ chính xác
Sắp xếp và tìm kiếm
không liên quan
bổ trợ nhau
mâu thuẫn
độc lập hoàn toàn
Thuật toán sắp xếp phụ thuộc
ngôn ngữ
cấu trúc dữ liệu
màu giao diện
font chữ
Sắp xếp trước khi tìm kiếm nhị phân là
không cần
bắt buộc
tùy chọn
sai
Vai trò của sắp xếp trong KHMT là
phụ
nền tảng
không cần
hiếm dùng
