标签:个数 log pre 总结 复杂度 算法 复杂 lang 心得
1. 实践题目
二分查找
2. 问题描述
输入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
3. 算法描述
将数组一份为二,若所查找的数等于中位数,则返回中位数;若所查找的数小于中位数,在左边区域进行二分查找;若所查找的数大于中位数,在右边区域继续进行二分查找。
4. 算法时间及空间复杂度分析(要有分析过程)
二分查找的区间大小是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),k是循环的次数。
最坏的情况是K次二分之后,每个区间的大小为1,找到想要的元素
令n/2^k=1,
可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn).
5. 心得体会(对本次实践收获及疑惑进行总结)
通过解这道题,我了解了二分查找的整个过程,学会了如何分析算法的时间复杂度,也可以写出程序,比以前有很大进步。
标签:个数 log pre 总结 复杂度 算法 复杂 lang 心得
原文地址:https://www.cnblogs.com/xuewenblog/p/11594930.html