1
C++初心者ここ!並べ替えられたベクトルv
(一意でない値を持つ)とスカラーx
がある場合、どのようにバイナリ検索を実行して、x
と等しいか小さい要素の位置を返すことができます。値のちょうど小さい要素の位置のバイナリ検索
std::vector<double> v { 0.9,0.78,0.6,0.4,0.33,0.2,0.2,0.2,0.07 }
double x = 0.7;
int position = BinaryFindPosition(v.begin(),v.end(),x);
// position is 2
シンプル - 'のstd :: lower_bound'または' STDを使用します。 :upper_bound'。 – PaulMcKenzie
OP - @ PaulMcKenzieがあなたを参照した2つの機能を調べます。あなたは一意でない値を言ったので、 'upper_bound'を使いたいかもしれません。また、値は*逆順でソートされています(最大値が最初に表示されます)。コンパレータを使用するオーバーロードを使用する必要があります。 –
@HappyGreenKidNapsカスタムコンパレータの代わりに 'rbegin()'/'rend()'を使うことができます。 – dasblinkenlight