2016-11-23 11 views
-1

こんにちは、私はバイナリ検索を持っています、ソートされた数字のリストボックスがあり、ユーザはリストボックス内の位置を確認するためにテキストボックスに値を入力します。しかし、テキストボックスに入力された数字は、リストボックス内のポジションとして、例えば、 5が入力されました。「あなたが探している番号が5位にあります。バイナリ検索が正しく動作しません

  int Number = (Convert.ToInt16(textBox1.Text)); 

      int a = lstHoldValue.Items.Count; 
      int start = 0, end = a - 1, mid = (start + end)/2; 

      while (start <= end) 
      { 
       mid = (start + end)/2; 
       if (Number == Convert.ToInt16(lstHoldValue.Items[mid])) 
       { 
        MessageBox.Show("The number you are searching is found in position " + (Number)); 
        return; 
} 
+2

あなたが証明またはバイナリ検索部をテストするためにGUIを使用する必要はありません念頭に置き、[MCVE]を提供してください自体。あなたの 'MessageBox.Show'呼び出しでも*非常に慎重に見なければなりません*。あなたはポジションを提供するために何を使用していますか、それはあなたが提供したいものですか? (ヒント:あなたのコードに '' ... "+(Number)'があるときは、数字が表示されても驚かないでください...) –

+0

コードを見直してデバッグしてください。 numArrayの内容は何ですか? –

+0

申し訳ありませんが、iveは間違ったコードを示しました。以前のコードではnumArrayを使用していました。私はリストボックスを使うだけでこれをやろうとしていますが。 –

答えて

0

二分探索ブロックは、エラーがあなたが印刷したメッセージである

正しいです。それは次のようになります。

MessageBox.Show("The number you are searching is found in position " + (mid)); 

半ば代わりの

関連する問題