算法第二章上机实践报告

1.实践题目

二分查找

2.问题描述

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

3.算法描述

运用普通的二分查找并且创建一个全局变量储存比较次数

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

在最坏情况下是在排除到只剩下最后一个值之后得到结果,所以为假使总共有n个元素,那么二分后每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。 
最坏的情况是K次二分之后,每个区间的大小为1,找到想要的元素
令n/2^k=1, 
可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn).

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

根据题目要求需要一个函数里面得出两个数,故引入了全局变量或者用C++比较特殊的引用(也就是用地址传参)解决了函数返回的问题

 

你可能感兴趣的:(算法第二章上机实践报告)