2013-11-21 152 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