バイナリ検索は、ソートされたエントリで動作します。このアルゴリズムによれば、エントリ数(n)が偶数であれば、最初にn/2番目のエントリを検索する。それがキーの場合は、それ以外の場合はキーがn/2より小さいかどうかをチェックします。それがより小さい場合、残りの半分を破棄して、インデックス1からn/2 -1まで検索が続きます。同様に、検索されたキーが見つかるまで、プロセスが繰り返されます。 奇数のエントリの場合、中間の位置はn-1/2です。バイナリ検索でテーブルを読み込むと、SAP ABAPでエントリが重複した場合の最初のエントリが返されるのはなぜですか?
私の質問は、重複するエントリがあり、11122233のような昇順でソートした場合です。今度は、key = 1(構文を無視してください)のテーブルバイナリ検索を読んで、アルゴリズムに従って/ 2 = 4ですが、4番目の位置は1ではないので、1から4番目の位置に検索が続きます。さて、n/2 = 2番目の位置は1でキーです。したがって、検索は2番目のインデックスで停止します。したがって、2番目のインデックスが返されます。
しかし、read tableバイナリ検索では、1の最初のエントリ、つまりインデックス1が返されます。なぜそうなのか?説明してください。
バイナリ検索のバリエーションがあります。キーを見つけたときに中断する人もいれば、最初に見つかったことを確認し続ける人もいます。 [ここをクリック](http://www.ffbit.com/blog/2013/02/26/first-occurrence-binary-search/)。これについてはあまり言わない。 SAPは最も有用と感じるものは自由に実装できますか? – trincot
前の参加者と同意してください。 SAPは任意のアルゴリズムを自由に実装できます。それは「なぜ空が青いのか」という疑問です。 – Suncatcher
これは、SAPがバイナリ検索のこの種の変種を使用していることを意味します。しかし、空がなぜ青色であるのかという質問は間違いありません。 – user3757558