算法第二章上机实践报告

1.实践题目

  二分查找

2.问题描述

  输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数

3.算法描述

  代码的核心部分:

while(left <= right){
        mid = (left + right) / 2;
        cnt++;
        if(a[mid] == x) break;
        else if(a[mid] < x){
            left = mid + 1;
        }
        else right = mid - 1;
    }

  二分查找的理解即为:取一段数列的中点,如果中点恰好为该数字则退出;

  若中点比查找的数x小,则在数列的右端查找(left = mid + 1),否则在数列的左端查找;

  不断重复,直到查找到x,若不存在,则返回-1及比较次数。

4.算法时间及空间复杂度分析

  二分查找也可称为折半查找,即不断取n个元素数组的中点,剩余元素从n/2到n/2^k不断减少;

  到最后查找到的情况下,n/2^k=1,即可得k=logn,时间度复杂度为O(logn);

  至于空间复杂度的求解本人不太熟练,在百度结果后得到,求空间复杂度的过程比较复杂,简单算法的空间复杂度一般为O(1)。

5.实验课的个人感想

  感觉结对编程的合作方式非常好,在解决算法问题的时候不再有单打独斗的感觉,有问题可以大家一起解决。

 

转载于:https://www.cnblogs.com/RS-Sakura/p/9824656.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值