Hiểu về tìm kiếm xấp xỉ trong Excel – một cách để tối ưu hóa tốc độ

Page 2 of 4

Cách mà Binary search hoạt động trong Excel

Trước hết, mình sẽ đặt một câu hỏi cho các bạn. Liệu với một mảng không được sắp xếp, ta có biết được kết quả trả về sẽ “sai” như thế nào không?

Một mảng ví dụ cho các bạn:

[10,5,30,25,20,15]

Yêu cầu là ta cần tìm vị trí “sai” của số 15 với hàm =MATCH(15,mảng_trên,1)

Đáp án ở đây là 2, và tại sao lại như vậy? Các bạn hãy nhớ nguyên tắc của Binary Search nhé.

Các bước cụ thể:

Đầu tiên, Excel sẽ đánh số thứ tự các phần tử trong mảng

123456
10530252015

Và bởi Binary Search sẽ bắt đầu với vị trí ở giữa hoặc làm tròn xuống, ta có vị trí bắt đầu là vị trí số 3. Tại đây, Excel sẽ chèn giá trị tìm kiếm vào ngay sau vị trí tìm kiếm:

123*456
1053015252015

Bởi 15 < 30, Binary Search sẽ tiếp tục ở bên mảng trái. Và bởi (2+1)/2 làm tròn xuống = 1, giá trị được so sánh sẽ nằm ở vị trí thứ nhất, giá trị tìm kiếm đặt ở sau.

1*23456
1015530252015

Bởi 10 < 15, nên Binary Search sẽ tìm về bên phải. Lúc này giá trị tìm kiếm sẽ di chuyển sang bên phải. Lúc này ta chỉ còn 1 cột ở vị trí 2:

12*3456
1051530252015

Bởi 5 < 15 và không còn nơi nào để di chuyển, giá trị trả về sẽ là 2.

Trong trường hợp ta thay 5 tại vị trí 2 bằng một số bất kỳ lớn hơn 15, chẳng hạn 100, kết quả trả về sẽ là 1. Bởi khi đó, 10 sẽ là số nhỏ hơn gần nhất với 15.

Áp dụng vào trong Excel, giờ mình có một ảnh như này, các bạn đã hiểu tại sao kết quả của hàm MATCH lại trả về như vậy chưa nào?

Nếu chưa hiểu, các bạn nhìn vào cột C để thấy thứ tự các bước dò tìm nhé
Page

Tác giả: Minhlai

· · ·

Khóa học mới xuất bản