算法第二章实践
Posted laborioso
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第二章实践相关的知识,希望对你有一定的参考价值。
1、实践题目
二分查找
2、问题描述:
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
3、算法描述
(1)由(left+right)/2 求出数组中间那个数据的下标mid
(2)判断下标为mid的数据值与目标值x的关系,相等则找到,不等则判断大小。同时在开始比较时记录增加一次比较次数。
(3)由大小来判断x所在区间,确定后重复上述操作直到x找到或者当left>right时则x不存在。
4、算法时间及空间复杂度分析
二分算法最坏情况要进行log2n次搜索,而递归时间复杂度为O(1),那么时间复杂度为O(log2n)
空间复杂度为O(1)
5、心得
熟悉了二分搜索的条件判断及过程,判断条件是很重要的一环,不然影响了搜索的范围,在递归过程中会不断放大误差。在计算比较次数的时候,思想比较局限在每次比较的条件中有一个++的操作,但其实每次进行递归都必定进行比较,只需要在进行比较前记录一次就足够了,所以程序整体和局部的联系是需要理解清楚的。
以上是关于算法第二章实践的主要内容,如果未能解决你的问题,请参考以下文章