Câu hỏi 2. Cho dãy A= {0, 4, 8, 10, 12,14, 17, 18, 20, 31, 34, 87}Với thuật toán tìm kiếm...

Câu hỏi:

Câu hỏi 2. Cho dãy A= {0, 4, 8, 10, 12,14, 17, 18, 20, 31, 34, 87}

  1.  Với thuật toán tìm kiếm tuần tự, cần duyệt bao nhiêu phần tử để tìm ra phần từ có giá trị bằng 34?
  2.  Với thuật toán tìm kiếm nhị phân, cần duyệt bao nhiêu phần tử để tìm ra phân tử có giá trị bằng 34?
  3. Thay vị lần lượt lật các thẻ từ đầu đến cuối, bạn Minh đã chơi như sau: Đầu Tiên Minh lật thẻ ở giữa, sau đó tuỳ theo số ghi trên thẻ là lớn hơn hay nhỏ hơn số K mà lạt tiếp thẻ ở ngay bên trái hoặc ngay bên phải thẻ ở giữa. Trong trường hợp này, số lần nhiều nhất mà Minh phải lật để tìm ra thẻ in số K là bao nhiêu?
Câu trả lời:
Người trả lời: GV. Đỗ Đăng Dung
Phương pháp giải:

1. Tìm kiếm tuần tự:
- Duyệt từ đầu đến cuối dãy A để tìm phần tử bằng 34.
- Vì dãy A đã được sắp xếp tăng dần nên cần duyệt qua 10 phần tử (từ 0 đến 34).

2. Tìm kiếm nhị phân:
- Chia dãy thành 2 phần, so sánh phần tử ở giữa với 34.
+ Nếu phần tử ở giữa lớn hơn 34, loại bỏ phần bên phải và tiếp tục tìm kiếm trong phần còn lại.
+ Nếu phần tử ở giữa bé hơn 34, loại bỏ phần bên trái và tiếp tục tìm kiếm trong phần còn lại.
- Lặp lại quá trình trên cho đến khi tìm ra phần tử bằng 34.
- Vì dãy A đã được sắp xếp tăng dần nên cần duyệt qua 6 phần tử (từ 17 đến 34).

Vậy, câu trả lời cho câu hỏi là:
Với thuật toán tìm kiếm tuần tự, cần duyệt 10 phần tử để tìm ra phần từ có giá trị bằng 34.
Với thuật toán tìm kiếm nhị phân, cần duyệt 6 phần tử để tìm ra phân tử có giá trị bằng 34.

Nếu số bé hơn 34 lật 10 lần, số lớn hơn 34 lật 1 lần.
Câu hỏi liên quan:
Bình luận (0)
Nhấn vào đây để đánh giá
Thông tin người gửi
0.08523 sec| 2261.922 kb