Tin học 11 · Chung, Khoa học máy tính và Tin học ứng dụng
Tin họcLớp 11Phần 6. KHMT · Chủ đề 6. Kĩ thuật lập trình · Chọn định hướng, không bắt buộc THUD

Bài 19 · KHMT. Bài toán tìm kiếm

Mục tiêu bài học

  • Giải thích và vận dụng kiến thức về bài toán tìm kiếm.
  • Tạo hoặc đánh giá sản phẩm cụ thể, giải thích kết quả và kiểm tra điều kiện áp dụng.

Bài giảng

Hiểu cách hoạt động

Tìm kiếm cần xác định giá trị/vị trí và cách xử lí không thấy hoặc lặp. Tuyến tính duyệt được dãy bất kì; tìm nhị phân cần dãy sắp theo thứ tự và thu hẹp khoảng. Trong mã này vị trí từ0, không thấy trả-1. Với phần tử lặp, tìm nhị phân cơ bản không bảo đảm vị trí đầu tiên.

Làm và tự kiểm tra

Chương trình mẫu đã kiểm tra bằng thực thi trong quá trình biên soạn:

def tim(a,x):
    for i in range(len(a)):
        if a[i]==x:
            return i
    return -1
print(tim([8,3,6,3],3))

Với đầu vào cố định như chương trình, kết quả in: 1. Vị trí1 là lần đầu, không nhầm vị trí thứ hai theo đếm1.

Ghi nhớ

Tìm kiếm cần xác định giá trị/vị trí và cách xử lí không thấy hoặc lặp.

Bài tập

Đã đúng 0/6 câu

  1. Đọc ngữ liệu

    Dãy mẫu[8,3,6,3],tìm3; trả chỉ số đầu từ0 hoặc−1 nếu không thấy.

  2. Câu 1Mức 2Trả lời ngắn

    Chương trình Python sau in ra số nào?

    def tim(a,x):
        for i in range(len(a)):
            if a[i]==x:
                return i
        return -1
    print(tim([8,3,6],9))
    
  3. Câu 2Mức 2Trả lời ngắn

    Chương trình Python sau in ra số nào?

    def tim(a,x):
        for i in range(len(a)):
            if a[i]==x:
                return i
        return -1
    print(tim([5,2,5],5))
    
  4. Câu 3Mức 2Trả lời ngắn

    Chương trình Python sau in ra số nào?

    def tim(a,x):
        l=0
        r=len(a)-1
        while l<=r:
            m=(l+r)//2
            if a[m]==x:
                return m
            if a[m]<x:
                l=m+1
            else:
                r=m-1
        return -1
    print(tim([2,4,6,8,10],8))
    
  5. Câu 4Mức 2Trắc nghiệm 1 đáp án

    Điều kiện của tìm nhị phân là gì?

  6. Câu 5Mức 2Đúng / Sai

    Trả-1 là một quy ước không thấy, không phải phần tử cuối cần lấy.

  7. Câu 6Mức 2Sắp xếp thứ tự

    Sắp xếp các bước theo phương pháp giải của nhiệm vụ này.

    Sắp xếp các mục theo thứ tự đúng (kéo thả hoặc dùng nút mũi tên).

    1. 1Kiểm tra có/không và lặp
    2. 2Chọn thuật toán theo dữ liệu
    3. 3Tìm và trả vị trí hoặc-1
    4. 4Xác định mục tiêu/kiểu kết quả
  8. Câu 7Mức 3Tự luận

    Viết tìm tuyến tính trả vị trí đầu của3 trong8,3,6,3. Viết chương trình hoàn chỉnh và kiểm tra theo dữ liệu mẫu. Người dạy chấm mã và lập luận, không so khớp kí tự mã.

    0 từ

    0/10 ảnh

    Có thể chụp nhiều trang. Ảnh được lưu cùng bài làm và giáo viên sẽ chấm trên ảnh.

    Vẽ bài làm

    Ảnh bài làm

    Cuộn chuột hoặc chụm hai ngón để phóng to · kéo để di chuyển · phím R để xoay

  9. Câu 8Mức 4Tự luận

    Nếu muốn mọi vị trí của3, sửa cách dừng thế nào?

    0 từ

    0/10 ảnh

    Có thể chụp nhiều trang. Ảnh được lưu cùng bài làm và giáo viên sẽ chấm trên ảnh.

    Vẽ bài làm

    Ảnh bài làm

    Cuộn chuột hoặc chụm hai ngón để phóng to · kéo để di chuyển · phím R để xoay