算法第二章上机实践报告

算法第二章上机实践报告
组员:李安琪 林若琳
题目:输入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)
 
posted @ 2019-09-25 18:10  林若琳  阅读(113)  评论(0编辑  收藏  举报