private bool IsCanStart() { if (end < start) { result = -1; return(false); } if (itsSortedObj.CompareTo(start) < 0) { result = -1; return(false); } if (itsSortedObj.CompareTo(start) == 0) { result = start; return(false); } if (itsSortedObj.CompareTo(end) > 0) { result = -1; return(false); } if (itsSortedObj.CompareTo(end) == 0) { result = end; return(false); } return(true); }
public int Find(object findValue, object sortedObj) { itsSortedObj.SetSortedObj(sortedObj); itsSortedObj.SetFindValue(findValue); start = itsSortedObj.GetStart(); end = itsSortedObj.GetEnd(); operations = 0; if (!IsCanStart()) { return(result); } while (start < end) { ++operations; int middle = (start + end) / 2; if (itsSortedObj.CompareTo(middle) < 0) { end = middle - 1; } else if (itsSortedObj.CompareTo(middle) > 0) { start = middle + 1; } else { return(middle); } } return(-1); }