码迷,mamicode.com
首页 > 编程语言 > 详细

算法第二章实践

时间:2019-09-26 23:28:49      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:个数   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!