に等しい索引9上にある第四の繰り返し、上の私の推測では、あなたがバイナリ検索を使用する必要があることである指標13、で始まりますここでは、アイテムがソートされます。
m = (l + r)/2 = (0 + 14)/2 = 7
[m = 7] = 100 is < 205 ==> l = 7 + 1
m = (l + r)/2 = (8 + 14)/2 = 11
[m = 11] = 271 is > 205 ==> r = 11 - 1
m = (l + r)/2 = (8 + 10)/2 = 9
[m = 9] = 205 is = 205 ==> result = [9]
= 3回の反復:次に、あなたがこれらの反復を必要とする
left and right indexes: l = 0, r = 14 (= length of array)
:
は、あなたがして初期化し、この配列
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
4, 7, 19, 25, 36, 37, 50, 100, 101, 205, 220, 271, 306, 321
を考えます!
ただし、アルゴリズムを少し変更すると反復回数が変わる可能性があります。あなたが初期値としてr = N-1
の代わりN
を取るなら、あなたが得る:
m = (l + r)/2 = (0 + 13)/2 = 6 (integer division)
[m = 6] = 50 is < 205 ==> l = 6 + 1
m = (l + r)/2 = (7 + 13)/2 = 10
[m = 10] = 220 is > 205 ==> r = 10 - 1
m = (l + r)/2 = (7 + 9)/2 = 8
[m = 8] = 101 is < 205 ==> l = 8 + 1
m = (l + r)/2 = (9 + 9)/2 = 9
[m = 9] = 205 is = 205 ==> result = [9]
= 4回の反復を!
結果は実装の詳細によって異なります。両方の変形が正しい。適切なループ条件を選択するように注意してください(最初はl < r
、2番目のアルゴリズムはl <= r
だと思います)
注文アイテムの検索アルゴリズムに関して、彼らは何を教えましたか?ここでは、あなたが望む要素が見つかるまで、0から始まり、一度に1つずつインデックスを作成します。もちろん、4以上になります。もっと効率的なアルゴリズムを使った答えを探しています。クラス、またはあなたが見ているテキストブック(バイナリ検索など)。 – lurker