1.トピック:
nの値(1 <= N <= 1000)、nは整数の非降順及びXの数は、Xを見つけるためにバイナリサーチアルゴリズムを使用して、出力Xを見つけるためにここで添字(0〜N-1)と比較の数。xが存在しない場合は、出力1と比較の数。
入力フォーマット:
入力コモン三行:最初の行nの値であり、nは整数第二線である第三の線はx値です。
出力フォーマット:
ここで、添字x出力(0〜N-1)との比較の数。xが存在しない場合は、出力1と比較の数。
サンプル入力:
4
1 2 3 4
1
出力例:
0 2
2.问题描述:用二分查找在一个有序数组中找一个数,并求出比较次数。
3.算法描述:
使用二分查找算法,每进行一次比较判断前计数加一。
代码如下:
書式#include <iostreamの>
名前空間stdを使用。
INT BinarySearch([]、int型のx、int型N INT){
; 0 =左のint
右int型= N-1;
int型のカウント= 0;
一方(左<=右){
INT中間=(左+右)/ 2。
++数えます。
もし(x == A [中央]){
coutの<<真ん中<<てendl;
coutの<<数えます。
真ん中を返します。
}
IF(X> [中央]){
左=中央+ 1。
}
他の{
-1真ん中=右。
}
}
裁判所未満<< " - 1" <<てendl;
coutの<<数えます。
-1を返します。
}
{int型のmain()
int型のn;
cinを>> N;
int型* A =新しいINT [N];
以下のために(INT i = 0; iがn <; iは++){
CIN >> [i]は、
}
int型のx;
cinを>> X;
BinarySearch(X、N)
0を返します。
}
4.算法时间复杂度及空间复杂度
原本规模为n,运用了二分法,每次都除以二,即o(logN),
空间复杂度为o(1)。
5.心得体会(对本次实践收获及疑惑进行总结)
(1.巩固了二分查找法,学会了在二分查找算法里面计数。
(2.也解决了对“在函数里面输出结果然而还要用return”的问题:因为若不用return,
循环不得停止,则也没办法退出循环输出查找不到的情况。