Nếu phải tìm một số trong dãy đã sắp xếp theo thứ tự tăng dần hoặc giảm dần, em có cách nào tìm nhanh hơn tìm kiếm tuần tự không?
Nếu phải tìm một số trong dãy đã sắp xếp theo thứ tự tăng dần hoặc giảm dần, em có cách nào tìm nhanh hơn tìm kiếm tuần tự không?
Có 8 thẻ, mỗi thẻ có ghi một số nguyên trên đó. Tất cả các thẻ được sắp xếp thành dãy theo thứ tự không giảm của các số ghi trên đó và đặt sấp mặt ghi số xuống bàn để em không nhìn thấy. Cô giáo đọc một số, gọi là X chẳng hạn. Cần trả lời câu hỏi: Có hay không một thẻ ghi số X? Hãy sử dụng ít nhất số lần lật một thẻ lên xem mà vẫn trả lời được câu hỏi. Bạn Thanh An cho rằng chỉ cần không quá ba lần lật thẻ là trả lời được. Em đồng ý với Thanh An không? Vì sao?
Thảo luận (1)Hướng dẫn giảitham khảo
Em đồng ý với ý kiến của bạn Thanh An.
Vì khi ta chia đôi để tìm một số trong dãy thì ta có thể tìm được kết quả nhanh hơn.
Ta sẽ sắp xếp dãy theo thứ tự không giảm, sau đó chia đôi để tìm kiếm. Nên sẽ không tìm quá ba lần lật thẻ.
(Trả lời bởi Mai Trung Hải Phong)
Cho dãy số 5, 11, 18, 39, 41, 52, 63, 70. Hãy mô tả diễn biến từng bước tìm kiếm nhị phân để tìm kiếm x = 60 trong dãy trên
Thảo luận (1)Hướng dẫn giảitham khảo
Tìm kiếm x = 60.
Bước 1. Ta sắp xếp dãy theo thứ tự không giảm.
Bước 2. Ta chia đôi dãy số để tìm x trong dãy. Ta sẽ chia ngay vị trí a6 (a6=52) vì x > a6. Phạm vi tìm kiếm tiếp theo là từ a7 đến a8.
Bước 3. Khi đó phạm vi tìm kiếm chỉ có a7 đến a8 và ta thấy không có số nào bằng x. Kết thúc thuật toán không tìm thấy kết quả x.
(Trả lời bởi Mai Trung Hải Phong)
Em hãy mô tả cách tra cứu, tìm giải nghĩa một từ trong từ điển. Có thể gọi cách tìm đó là áp dụng thuật toán tìm kiếm nhị phân không?
Thảo luận (1)Hướng dẫn giảitham khảo
Cách tra cứu, tìm giải nghĩa từ điển:
Danh sách các giá trị dữ liệu không được sắp xếp và có thể được thay đổi bằng cách sử dụng các phương thức tích hợp sẵn. Từ điển được sử dụng để tạo ra một bản đồ cho các khóa (keys) độc nhất tới giá trị (values). Từ điển sẽ sắp xếp một tập các đối tượng (khóa) đến một tập các đối tượng là giá trị, do đó người sử dụng có thể tạo ra một danh sách các đối tượng không theo thứ tự. Các từ điển được tạo ra có thể biến đổi được, có nghĩa là chúng có thể được thay đổi tùy theo mục đích của người dùng.
Ta gọi cách tìm kiếm đó là thuật toán nhị phân.
(Trả lời bởi Mai Trung Hải Phong)
Hãy mô tả quy trình chia đôi dần để thực hiện tìm kiếm nhị phân
Thảo luận (1)Hướng dẫn giảiBước 1. Sắp xếp dãy theo thứ tự không giảm.
Bước 2. Ta chia đôi dãy số để tìm x trong dãy.
Bước 3. Lấy phần tử đứng giữa dãy để so sánh với x.
Nếu phần tử đó chính là x thì kết luận đã tìm thấy x và kết thúc thuật toán.
Ngược lại, ta có thể xác định được x chắc chắn không có trong nửa đầu hay nửa sau của dãy. Từ đó ta xác định được phạm vi tìm kiếm và thực hiện tìm kiếm trong phạm vi nữa dãy còn lại, sẽ được lặp lại theo cách như thế cho đến khi tìm được kết quả.
(Trả lời bởi Quoc Tran Anh Le)
Theo em, có phải với bất cứ dãy số nào cũng có thể áp dụng được thuật toán tìm kiếm nhị phân không? Giải thích tại sao.
Thảo luận (1)Hướng dẫn giảitham khảo
Theo em, chỉ thực hiện tìm kiếm nhị phân ở một số dãy số. Vì khi dãy có thứ tự thì mới áp dụng được tìm kiếm nhị phân.
(Trả lời bởi Mai Trung Hải Phong)