Cải thiện bài viết
Lưu bài viết
Cải thiện bài viết
Lưu bài viết
Đọc
- Bàn luận
- Tóm lại, thuật toán tìm kiếm này tận dụng một bộ sưu tập các yếu tố đã được sắp xếp bằng cách bỏ qua một nửa các yếu tố chỉ sau một so sánh. & NBSP;
- So sánh X với phần tử giữa.
- Nếu X khớp với phần tử giữa, chúng ta sẽ trả về chỉ số giữa.
Khác nếu x lớn hơn phần tử giữa, thì x chỉ có thể nằm ở nửa bên phải [lớn hơn] sau phần tử giữa. Sau đó, chúng tôi áp dụng thuật toán một lần nữa cho nửa đúng.
Python3
Khác nếu X nhỏ hơn, mục tiêu X phải nằm ở một nửa bên trái [thấp hơn]. Vì vậy, chúng tôi áp dụng thuật toán cho nửa trái.
Đệ quy:
def
binary_search[arr, low, high, x]:
if
high >
=
low:
Element is present at index 30__
‘
def
4def
5 def
6
binary_search[arr, low, high, x]:
7binary_search[arr, low, high, x]:
8
def
8 def
9
binary_search[arr, low, high, x]:
7binary_search[arr, low, high, x]:
8
def
4def
5 binary_search[arr, low, high, x]:
2binary_search[arr, low, high, x]:
3 binary_search[arr, low, high, x]:
4binary_search[arr, low, high, x]:
5
def
4def
5
1
Element is present at index 33
binary_search[arr, low, high, x]:
4
4
def
5 binary_search[arr, low, high, x]:
3binary_search[arr, low, high, x]:
4
if
2=
if
4
Element is present at index 37
if
6if
7____56if
9if
6high >
1if
6high >
3 high >
4high >
5=
high >
1
low:
5low:
6low:
7if
6low:
9
0
binary_search[arr, low, high, x]:
7binary_search[arr, low, high, x]:
8
low:
5low:
6
6
7
Output:
high >
8=
=
0=
1if
6=
3=
4binary_search[arr, low, high, x]:
3binary_search[arr, low, high, x]:
4binary_search[arr, low, high, x]:
5if
=
9=
binary_search[arr, low, high, x]:
3binary_search[arr, low, high, x]:
4binary_search[arr, low, high, x]:
8: O[log n]
Element is present at index 3
: O[logn] [NOTE: Recursion creates Call Stack]
Iterative:
Python3
Độ phức tạp về thời gian: O [log n]
Không gian phụ trợ: O [logn] & nbsp; & nbsp; [Lưu ý: đệ quy tạo ra ngăn xếp cuộc gọi]
def
9
Element is present at index 301
=
=
1
Element is present at index 305
=
=
3Element is present at index 308
binary_search[arr, low, high, x]:
3 binary_search[arr, low, high, x]:
4def
binary_search[arr, low, high, x]:
if
high >
=
low:
Element is present at index 30__
‘
def
4def
5 def
6
binary_search[arr, low, high, x]:
7binary_search[arr, low, high, x]:
8
Element is present at index 30__
‘
def
4def
5
1
Element is present at index 33
binary_search[arr, low, high, x]:
4
4
def
5 binary_search[arr, low, high, x]:
3binary_search[arr, low, high, x]:
4
if
2=
if
4
Element is present at index 37
if
6if
7____56if
9if
6high >
1if
6high >
3 high >
4high >
5=
high >
1
low:
5low:
6low:
7if
6low:
9
0
binary_search[arr, low, high, x]:
7binary_search[arr, low, high, x]:
8
low:
5low:
6
6
7
Output:
Element is present at index 3
if
=
9=
binary_search[arr, low, high, x]:
3binary_search[arr, low, high, x]:
4binary_search[arr, low, high, x]:
8: O[log n]
Element is present at index 3
: O[1]
Please refer to the article Binary Search for more
details!