Binary Search (Tìm ki m nh fân)ế
Thu t toán tìm ki mế nh fân s d ng
thu t chia đ tr đ tìm ki mế.
Đ u tiên, f n t tìm ki mế đ cượ so sánh
v i ph n t gi a c a list.
N uế f n t tìm ki mế bé hơn ph n t gi a,
gi i h n tìm ki m l i v n a đ u c a list.
N uế không, tìm ki m nếa sau c a list.
Binary Search
Tìm ki mế nh fân là 1 k thu t m nh đáng
kinh ng c đ tìm ki mế trong 1 list đã đ cượ
s p x pế.
Nó quen thu c v i m i ng iườ s d ng
danh b đi n tho i.
Minh ha
Tìm ki mế v i key = 78:
1 3 5 6 10 11 14 25 26 40 41 78
- (Xem hình minh ho trong slide ti ng anh) ế
- 4 phép toán c n thi t đ tìm ra ph n t fù ế
h p.
- Th tính xem ph i dùng bao nhiêu phép
toán n u s d ng tìm ki m tu n t ?ế ế
Ví d
Đ u tiên so sánh 78 v i f n t gi a c a
list L[5] là 11.
78 > 11. Vì v y ta gi i h n l i tìm ki mế
L[6……11] như hình minh ho.
Binary Search Code
// target là s c n tìm, size là kích th cướ list
Int binSearch (int List[], int Target, int Size) {
int Mid,
Lo = 0,
Hi = Size –1;
while( Lo <= Hi ) {
Mid = (Lo + Hi) / 2;
if( List[Mid] == Target )
return Mid;
else if( Target < List[Mid] )
Hi = Mid –1;
else
Lo = Mid + 1;
}
return -1;
}