コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }

            return(Bisect());
        }