算法第二章上机实践报告

1、实践题目

二分查找

2、问题描述

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

3、算法描述

定义search函数,递归的结束条件是(right < left),输出-1;

Search函数中,取数组a的第mid的值,将a[mid]与x比较;

当x<a[mid],说明x在left-(mid-1)的范围内,然后继续运行search函数;

当x>a[mid],说明x在(mid+1)-right的范围内,然后继续运行search函数;

4、算法时间及空间复杂度分析(要有分析过程)

二分查找的平均查找长度为 (n+1)/n log2(n+1)-1

当n较大时,近似于:log2(n+1)-1

所以时间复杂度为O(log2n)

二分查找过程中无需另外申请其他空间

所以空间复杂度为O(1)

5、心得体会(对本次实践收获及疑惑进行总结)

  由于题目要求输出-1,之前就有return -1的步骤,就由于-1 不属于int类型,在定义函数的时候就试着定义为double类型,然后之后结果就一直输出不对,之后就直接放弃return ,改成直接输出

  在统计次数的时候,想过是重复search函数的,然后后来发现其实直接定义个全局变量来统计就好了

  因为定义名为times,而在PTA上编译错误,之后改了就好了。

原文地址:https://www.cnblogs.com/LuMinghao/p/9787837.html