ホームページ  >  記事  >  バックエンド開発  >  C++ を使用して、検索が成功するたびに要素を 2 倍にして要素を繰り返し検索します。

C++ を使用して、検索が成功するたびに要素を 2 倍にして要素を繰り返し検索します。

WBOY
WBOY転載
2023-09-25 20:09:11988ブラウズ

C++ を使用して、検索が成功するたびに要素を 2 倍にして要素を繰り返し検索します。

この記事では、整数の配列とキーワードが与えられています。配列内のキーを繰り返し検索し、検索のたびにキーを 2 倍にする必要があります。この操作を実行する時点では配列に存在しない値を返す必要があります。

いくつかの入力シナリオを見て、さまざまな状況でメソッドがどのように機能するかを確認してください

キーが 1 の配列 [1,2,6,3,7,4,9] を見てみましょう。

リーリー

1 が見つかったら、それを 2 倍にします。

2 が見つかったら、それを 2 倍にして 4 にします。

4 が見つかったら、それを 2 倍にして 8 にします。

配列に要素 8 がないため、8 を返します

別のケースで、キーが 1 の配列 {2, 3, 7, 8, 5, 9} を考えます。

リーリー

入力配列には要素 1 がないため、そのまま 1 を返します。

###アルゴリズム###

    小さな配列では二分検索の実行の複雑さが低いため、配列要素を並べ替えます。
  • 配列内の要素がキー値に一致するたびに、キー値を 2 倍にして配列を再度検索し、新しいキーに一致する要素を見つけます。
  • 配列内の二重キー値に一致する要素がなくなるまで、この手順を繰り返します。
  • 最後のキー値は、取得された出力です。
  • 例 (ベクトル ADT を使用)

配列をソートすることからこのメソッドの実装を開始します。その後、質問の内容を正確に実行し、検索と二重化を行います。二分探索による最適化検索を行います。同じロジックを適用して C プログラムを見てみましょう -

リーリー ###出力### リーリー

例 (ベクトル ADT を使用しない)

C プログラムも同じロジックに従いますが、ベクトル抽象データ型は使用しません。

このアプローチの実装は、配列をソートすることから始めます。その後、質問が求めていること、つまり検索とダブルを実行します。二分探索によって最適化します。

リーリー ###出力### リーリー ###結論は###

STL バイナリ検索メソッドを使用して、要素が見つかったかどうかに応じて true または false を返しました。カスタムのバイナリ検索実装を使用することもできます。 STL は、実装について深く考えずに問題を作成するのに役立つ、優れた並べ替えおよび検索メソッドを提供します。

以上がC++ を使用して、検索が成功するたびに要素を 2 倍にして要素を繰り返し検索します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。