二分查找 实践报告
题目
二分查找
输入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;
心得
这次的题目并不难,我也没有采用高级复杂的算法,其实还有其它更好的算法,让我意识到了我的不足。