再帰的なバイナリ検索に基づいて、

 

要素与えられた規則的な配列を見つけるために、再帰的なバイナリサーチアルゴリズムを記述してください。

データの複数のセット、データの3つの行の各セット。最初のラインアレイの長さnは、n個の第2上昇挙動番号、第三の行番号kを見つける必要があります。n = 0の場合、入力端。

各データ出力ライン、デジタル出力を見つけることができる場合は、「YES」、そうでなければ「NO」を出力します。

5 
1 4 6 7 8 
6 
6 
1 2 3 5 7 9 100 
8 
0
YES 
NO

1の#include <iostreamの>
 2  使用して 名前空間STDを、
3  
4  ブール binary_search(INT ARR []、INT低い、INT高い、int型のターゲット)
 5  {
 6      場合(低い> 高い)
 7          戻り 8      であれば(ロー<= 高)
 9      {
 10          int型ミッド=(低+ハイ)/ 2 11          であれば(ARR [中間] == ターゲット)
 12              リターン 13          他の 場合(MID < ターゲット)
 14          {
 15              binary_search(ARR、ミッド+ 1 、高い、ターゲット)
16          }
 17          他の
18          {
 19              binary_search(ARR、低、中- 1 、ターゲット)
20          }
 21      }
 22  }
 23  
24  のint main()の
 25  {
 26      INT * ARR。
27      INT N、標的;
28      一方(CIN >> N)
 29     {
 30          であれば(N == 0ブレーク31          ARR = 新しい INT [N + 1 ]。
32          のためにINT iは= 1 ; <I = N; I ++ 33              CIN >> ARR [I]。
34  
35          CIN >> ターゲット。
36          ブールフラグ= binary_search(ARR、1 、nは、ターゲット)
37          であれば(フラグ)
 38              COUT << " YES " << ENDL。
39         他の
40              coutの<< " NO " << てendl;
41          削除[] ARR。
42      }
 43      リターン 0 44 }

 

おすすめ

転載: www.cnblogs.com/christy99cc/p/10116718.html