トピック3:
値と配列の添字は、要素に等しいです。
整数の単調増加する配列と、各要素が一意であると仮定します。ターゲット要素に等しい配列のいずれかの値を見つけるために、プログラミング機能をしてください。例えば、アレイ{-3、-1,1,3,5}、数字3は、そのインデックスに等しいです。
ソリューション:
、左にその目標値よりも小さい添字値を二分法を使用して、右側の目標値よりも大きい添字値。
1 INT findThatNum(constのベクトル< INT >・データ) 2 { 3 であれば(data.size()== 0)リターン - 1 。 4 int型の L = 0、R = data.size() - 1 、M。 5 しばらく(L> = 0 && R <data.size()&& L <= R) 6 { 7 M =(R - L)/ 2 + L。 8 もし(データ[M] == M)リターンM。 9 他の 場合(データ[M]> M)M = R&LT - 1 ; // その値より下付き文字以下で、ターゲットは左 10 他の L = M + 1 ; // 右の目標値よりも大きい添字値 。11 } 12は リターン - 1。; 13 }