算法第二章上机实践报告
算法第二章上机实践报告
组员:李安琪 林若琳
题目:输入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
问题描述:用二分法比较下标并且记录比较次数,若x不存在则输出-1和比较次数
3.算法描述:
int BinarySearch(int* a,int x,int n){
int l=0;
int r=n-1;
while(l<=r) {
p++;
int m=(l+r)/2;
if(x==a[m]) return m;
else if(x>a[m]) l=m+1;
else r=m-1;
}
return -1;
}
算法时间及空间复杂度分析:
二分法查找,每次循环长度少一半:T(n) = logn * O(1) = O(logn)
二分法查找,每次循环长度少一半:T(n) = logn * O(1) = O(logn)