- ベストアンサー
二分検索のサイトを探しています。
これは、困っての質問ではありません。 >基本的な判定は、各段階で x が中央の要素 v[mid] より小さいか、 >より大きいか、あるいは等しいかである。 >われわれの二分探索では、ループの中で二つのテストを行っている。 >これは本来1回で十分である(外側でもっとテストが必要になるという第小はあるが。) ごく基礎的なところを学習しているVB.NETの初学者です。 今、Else If まで進んだところです。 上記の引用は二分検索に関するもの。 「一回のテストでOKな二分検索を書け」が演習テーマ。 それで、回答はありません。 回答自体は、設問の中に書かれていますのでさほど難しいものではありません。 ですから、回答自体は欲していません。 欲しているのは回答が書かれているサイト。 Wikpedia や入門サイトを検索しましたが、2つのテスト版しかヒットしません。 どなたか、「一回のテストでOKな二分検索」が掲載されているサイトを知りませんか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- cametan_42
- ベストアンサー率62% (166/266)
回答No.3
- aigaion
- ベストアンサー率47% (287/608)
回答No.2
- arain
- ベストアンサー率27% (292/1049)
回答No.1
お礼
Function BS(ByVal aGoods As String, ByVal aAttachs() As String) As String Dim S As Integer Dim L As Integer = aAttachs.Count - 1 Dim M As Integer Dim aEntryGoods As String = "" Do While S < L M = (S + L) / 2 aEntryGoods = aAttachs(M).Split(",")(0) If aEntryGoods < aGoods Then S = M + 1 Else L = M - 1 End If Loop Return If(aEntryGoods = aGoods, aAttachs(M), "") End Function Low = 0; high = n - 1; while (high > low) { mid = (high + low) / 2; if (x <= v[mid]) { high = mid; } else { low = mid + 1; } } return (v[low] == x) ? low : -1; /* 三項演算子 */ 上で正解だと思っていたのですが・・・。 とんでもない勘違いをしていました。 L = M で、書いて失敗。 まあ、いいかで L = M - 1 で逃げを打っていました。 正直に質問したが良かったですね。 ともかく、疑問が氷解しました。 ありがとうございます。