二分查找 实践报告

题目
二分查找
输入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

题目描述:设一个数组,长度为n,0<=n<=1000,对数组进行排序。查找x时,查找成功则输出其所在位置及比较次数,否则输出-1及比较次数

算法描述:定义一个符合条件的数组,定义了

int count = 0;
int left = 0;
int right = n-1;

 

count函数用来计算比较的次数

while(left<=right){
count++;
int mid = (left+right)/2;
if (x==a[mid]) {
cout<<mid<<endl<<count;

否则

if (x>a[mid]) left=mid + 1;
else right= mid -1;
}
cout<<"-1"<<endl<<count;

心得

这次的题目并不难,我也没有采用高级复杂的算法,其实还有其它更好的算法,让我意识到了我的不足。

 

posted @ 2018-10-21 21:34  ewerin  阅读(818)  评论(0编辑  收藏  举报