首页 > 编程语言 > 详细

算法第二章实践

时间:2019-09-26 23:45:40      阅读:96      评论:0      收藏:0      [点我收藏+]

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. 心得体会(对本次实践收获及疑惑进行总结)

通过解这道题,我了解了二分查找的整个过程,学会了如何分析算法的时间复杂度,也可以写出程序,比以前有很大进步。

算法第二章实践

原文:https://www.cnblogs.com/xuewenblog/p/11594930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!