2013-11-21 117 views
0

我第一次使用二进制搜索数组并遇到麻烦。我很确定这个问题在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); 
    }  
} 
+0

我相信你不小心换成myStr的和MyObj中的分配。 – Carth

+0

myObjArray必须排序 – evhen14

+1

@ evhen14他调用Array.Sort来对数组进行排序。 – Corey

回答

0

您的数组初始值设定项有一串空格在前面的字符串。您的搜索字符串没有空格,因此不会被找到。

<rant> 如果你没有包含所有其他的数组操作,这将会更容易回答。将问题减少到重现错误所需的最少代码总是一个好主意,因为这样做通常会帮助您确定问题实际存在的位置。 < /咆哮>

对不起,只好拿到了我的胸口:P

+0

谢谢。第一次在这里发布代码 – user2948556

+1

我在那里清理它。所以我会尝试删除空格? – user2948556

+0

是的,空间绝对重要。两个字符串“Stella”和“Stella”是不一样的,除了数字1234与数字234相同外。 – Corey