Hướng dẫn binary search list of strings python - danh sách tìm kiếm nhị phân của chuỗi python
Tôi tương đối mới với Python (3.3) và tôi chỉ đang cố gắng thực hiện tìm kiếm nhị phân thông qua danh sách các từ và không thể tìm ra cách khắc phục các loại toán hạng của mình khi nói đến việc lặp lại các chỉ số ... tôi Tiếp tục có được kiểu mẫu. Không thể tìm ra bất kỳ cách nào xung quanh nó Show
Tôi đang gọi chức năng như vậy: L = ["Brian", "Meg", "Peter", "Joe", "Stewie", "Lois"]] Tìm (L, "Joe")
Tdelaney 67.4K5 Huy hiệu vàng74 Huy hiệu bạc106 Huy hiệu đồng5 gold badges74 silver badges106 bronze badges Hỏi ngày 17 tháng 12 năm 2015 lúc 5:28Dec 17, 2015 at 5:28
7 Logic của bạn có vẻ tốt, ngoại trừ đầu vào và lỗi với điểm giữa tăng và giảm thay vì giữa.input and the bug with incrementing and decrementing midpoint instead of middle.
Bhargav Rao 47.6K27 Huy hiệu vàng122 Huy hiệu bạc137 Huy hiệu đồng27 gold badges122 silver badges137 bronze badges Đã trả lời ngày 17 tháng 12 năm 2015 lúc 5:40Dec 17, 2015 at 5:40
Jianweichuahjianweichuahjianweichuah 1.4071 huy hiệu vàng9 Huy hiệu bạc22 Huy hiệu đồng1 gold badge9 silver badges22 bronze badges 2
Như người khác chỉ ra, hãy sử dụng giữa thay vì điểm giữa Và để sử dụng tối ưu tìm kiếm nhị phân, hãy sắp xếp danh sách trướcbinary search, sort the list first
Vivek Sable 9,5343 huy hiệu vàng36 Huy hiệu bạc51 Huy hiệu đồng3 gold badges36 silver badges51 bronze badges Đã trả lời ngày 17 tháng 12 năm 2015 lúc 5:44Dec 17, 2015 at 5:44
Prashant Yadavprashant YadavPrashant Yadav Huy hiệu vàng 50111 gold badge10 silver badges25 bronze badges 1
Đã trả lời ngày 8 tháng 10 năm 2020 lúc 5:50Oct 8, 2020 at 5:50
SunnysunnySunny 1.08411 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges Xem thảo luận Cải thiện bài viết Lưu bài viết Xem thảo luận Cải thiện bài viết Lưu bài viết Đọc Examples:
Đầu vào: & nbsp; ARR [] = {{đóng góp, các geeks ,, 2 Chuỗi X có mặt tại INDEX 2. Implementation: C++
Đầu vào: & nbsp; mảng [] = {{đóng góp, các geeks ,, -1 chuỗi ZZ ZZ không có mặt. & NBSP; Điều kiện tiên quyết: Tìm kiếm nhị phân, so sánh chuỗi trong ý tưởng Javedit là so sánh X với chuỗi giữa trong mảng đã cho. Nếu nó phù hợp, sau đó trả về giữa, nếu không nếu nó nhỏ hơn giữa, sau đó tìm kiếm ở nửa trái, khác tìm kiếm ở nửa bên phải. & NBSP;
5
1 0 3 6 0 8 6 5 6 0 1 6 3 4 7 0 9 7 7 7 4 Element found at index 20 Element found at index 21 Element found at index 22 Element found at index 23 7 4 54Element found at index 21 Element found at index 28 7#include 0Element found at index 21 #include 2 6#include 4 6Element found at index 22 #include 7 4 std; 7
5 6using 6using 7using 8using 9using 8namespace 1using 8namespace 3namespace 4 6namespace 6namespace 1namespace 8
97 98 #include 92#include 93 1Đầu ra Độ phức tạp về thời gian: O (log (n)) & nbsp; không gian phụ trợ: O (1) 7std; 9 0 1 6#include 0 7std; 9 6 7
Java 00 01
03 0 05
5 6 0 10 11 12 13namespace 8 6 3 17 7 0 20 21namespace 8 7 0 25 7 4 28 11 30Element found at index 21 Element found at index 22 Element found at index 23 7 4 36 11 30Element found at index 21 40 13namespace 8 7#include 0Element found at index 21 46 13namespace 8 6#include 4 6Element found at index 22 53 13namespace 8
59 03 61 62
5 6 66using 7using 8using 9using 8namespace 1using 8namespace 3namespace 4 6 76namespace 1namespace 8 6 0 81 6 4 84 13 30 7 88 0 1 6#include 0 7 88 95 96 97 98 99
Python3 03 04
06 07 11
10 07 12 13
3 16 07 18 6 20 07 06 23 24 53 6 32 07 34 07 07 37 6 4 40 07 07 11 44 7Element found at index 22 20 53 13 6 4 36 11 44 7 06 07 20 23 13 6#include 0 63 7 10 07 20 53 13
Element found at index 22 53 13 4 75 07 07 78 63Các 88namespace 1using 8namespace 3 92
94 07 namespace 1
98 07 00
4 03 07 07 53 13 44 6 10 11 0 30
63 6 10 11 20 87 22 23C#
25 00 01
03 0 05
5 6 0 36 6 3 17 7 0 20 21namespace 8 7 0 25 7 4 28 11 30Element found at index 21 Element found at index 22 Element found at index 23 7 4 36 11 30Element found at index 21 Element found at index 28 7#include 0Element found at index 21 #include 2 6#include 4 6Element found at index 22 53 13namespace 8
59 03 61 62
5 6 66using 7using 8using 9using 8namespace 1using 8namespace 3namespace 4 6 76namespace 1namespace 8 6 0 81 6 4 84 13 30 96 97 98 99 6#include 0 7 96 95
def find(L, target): start = 0 end = len(L) - 1 while start <= end: middle = (start + end)// 2 midpoint = L[middle] if midpoint > target: end = middle - 1 elif midpoint < target: start = middle + 1 else: return midpoint L = ["Brian", "Joe", "Lois", "Meg", "Peter", "Stewie"] L = sorted(L) print(find(L, "Lois")) 03 def find(L, target): start = 0 end = len(L) - 1 while start <= end: middle = (start + end)// 2 midpoint = L[middle] if midpoint > target: end = middle - 1 elif midpoint < target: start = middle + 1 else: return midpoint L = ["Brian", "Joe", "Lois", "Meg", "Peter", "Stewie"] L = sorted(L) print(find(L, "Lois")) 04Element found at index 211
06 07 11 5
10 07 12 13
3 16 07 18 6 20 07 06 23 24 53
5 6 32 07 34 07 07 37 6 4 40 07 07 11 44 7Element found at index 22 20 53 13 6 4 36 11 44 7 06 07 20 23 13 7 10 07 20 53 13 6#include 0
Element found at index 22 53 13
4 75 07 07 78 63
Các Element found at index 21 namespace 1using 8namespace 3 1
94 07 namespace 1
98 07 00
4 03 07 07 53 13 44
10 11 0 1
10 11 6 #include 27Element found at index 204 #include 07 1
JavaScript
Element found at index 212 #include 34 5
6 3 17 7#include 42 7#include 44 7 4 Element found at index 20 Element found at index 21 Element found at index 22 Element found at index 23 7 4 54Element found at index 21 Element found at index 28 7#include 0Element found at index 21 #include 2 6#include 4 6Element found at index 22 #include 7
92
4 std; 7
95
97 98 #include 92#include 93 1
Đầu ra Element found at index 2 Độ phức tạp về thời gian: O (log (n)) & nbsp; không gian phụ trợ: O (1) O(log(n)) Tìm kiếm nhị phân có thể được sử dụng cho chuỗi Python không?Cho một mảng chuỗi được sắp xếp và chuỗi X, hãy tìm một chỉ mục X nếu nó có trong mảng. Chuỗi X có mặt tại INDEX 2.. The String x is present at index 2.
Tìm kiếm nhị phân có thể được sử dụng trong danh sách các chuỗi không?Thí dụ.Tìm kiếm nhị phân đang tìm kiếm kỹ thuật hoạt động bằng cách tìm phần giữa của mảng để tìm phần tử.Đối với mảng chuỗi, thuật toán tìm kiếm nhị phân sẽ vẫn giữ nguyên.Nhưng các so sánh được thực hiện sẽ dựa trên so sánh chuỗi.For array of strings also the binary search algorithm will remain the same. But the comparisons that are made will be based on string comparison.
Làm thế nào để bạn sử dụng tìm kiếm nhị phân trong Python?Algorithm.. 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 Subarray sau phần tử giữa.Vì vậy, chúng tôi tái diễn cho nửa đúng .. Khác (x nhỏ hơn) tái diễn cho nửa bên trái .. Python có chức năng tìm kiếm nhị phân tích hợp không?Mặc dù không có thuật toán tìm kiếm nhị phân rõ ràng trong Python, nhưng có một mô -đun - bisect - được thiết kế để tìm điểm chèn cho một phần tử trong danh sách được sắp xếp bằng tìm kiếm nhị phân.there's no explicit binary search algorithm in Python, there is a module - bisect - designed to find the insertion point for an element in a sorted list using a binary search. |