要素与えられた規則的な配列を見つけるために、再帰的なバイナリサーチアルゴリズムを記述してください。
データの複数のセット、データの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 }