private int FindTarget(SortedArray <int> items, int searchTarget, SearchIndicies searchIndicies) { if (items.Length == 0 || searchIndicies.Mid < searchIndicies.Low || searchIndicies.Mid > searchIndicies.High) { return(NotFound); } else if (items[searchIndicies.Mid] == searchTarget) { return(searchIndicies.Mid); } else { SearchIndicies nextInidicies = NextIndices(items[searchIndicies.Mid], searchTarget, searchIndicies); return(FindTarget(items, searchTarget, nextInidicies)); } }
public override int Locate(SortedArray <int> items, int searchTarget) { int found = NotFound; SearchIndicies searchIndicies = new SearchIndicies(items.Length - 1, 0); while (found == -1 && searchIndicies.Mid >= searchIndicies.Low && searchIndicies.Mid <= searchIndicies.High) { if (items[searchIndicies.Mid] == searchTarget) { found = searchIndicies.Mid; } else { searchIndicies = NextIndices(items[searchIndicies.Mid], searchTarget, searchIndicies); } } return(found); }
public override int Locate(SortedArray <int> items, int searchTarget) { SearchIndicies searchIndicies = new SearchIndicies(items.Length - 1, 0); return(FindTarget(items, searchTarget, searchIndicies)); }