Tôi đang nhầm lẫn về phương pháp tìm kiếm nhị phân List<T>
trong trường hợp mục không tồn tại.C# Danh sách <T>. Giá trị trả về tìm kiếm nhị phân khi giá trị không tìm thấy
Tôi đã có
List<long> theList = {1, 3, 5, ...}.
theList.BInarySearch(0)
trả về 0, và theList.BInarySearch(3)
lợi nhuận 1, như mong đợi.
Tuy nhiên, theList.BinarySearch(1)
trả về -2 và không phải -1 như tôi mong đợi. Hướng dẫn sử dụng MSDN cho biết: "Giá trị trả về: Chỉ mục dựa trên số không trong danh sách được sắp xếp, nếu mục được tìm thấy, nếu không, số âm là phần bổ sung bit của chỉ mục của phần tử tiếp theo lớn hơn mục hoặc , nếu không có phần tử lớn hơn, thì bổ sung bit của Count. "
Một "bổ sung bit"? Tôi đang thiếu gì ở đây và tại sao lại là theList.BinarySearch(1) != -1
?
Tôi cho rằng bạn đang tìm kiếm 'theList.BinarySearch (2)'? '1' là đúng ở đó ... – Kobi
Bổ sung bitwise chỉ đơn giản là một số là bổ sung cho mỗi bit của số đầu tiên. 00110101 = ~ 11001010. Nó giống như một hoạt động không, nhưng ở đâu! không một boolean không trên toàn bộ giá trị, ~ không một trên mỗi bit. –