我第一次使用二进制搜索数组并遇到麻烦。我很确定这个问题在void FindMyObject中。有任何想法吗?二进制部分接近底部。它被标记。它没有错误地运行,所以我相信我很接近。我已经看过几个例子,看起来这样,我还没有100%的理解逻辑。有什么建议?二进制搜索数组对象
string[] myStrArray = new string[] { " I"," am"," a"," Stella"," Student" };
object[] myObjArray = new object[] { " You"," are"," a"," Great"," Learner" };
void Page_Load(object sender, EventArgs e)
{
//Binary Search Array
Array.Sort(myStrArray);
Array.Sort(myObjArray);
Response.Write("<br/><br/>");
PrintValues(myStrArray);
PrintValues(myObjArray);
object myStr = "Learner";
FindMyObject(myStrArray, myStr);
object myObj = "Stella";
FindMyObject(myObjArray, myObj);
}
void FindMyObject(Object[] myArr, object myObject)
{
int myIndex = Array.BinarySearch(myArr, myObject);
if (myIndex < 0)
{
Console.WriteLine("The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, myIndex);
}
else
{
Console.WriteLine("The object to search for ({0}) is at index {1}.", myObject, myIndex);
}
}
我相信你不小心换成myStr的和MyObj中的分配。 – Carth
myObjArray必须排序 – evhen14
@ evhen14他调用Array.Sort来对数组进行排序。 – Corey