凤凰网招聘二分查找python实现
来源:互联网 发布:clover软件干嘛的 编辑:程序博客网 时间:2024/05/22 04:54
设有一组关键字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找关键字93需要进行多少次比较()
A. 2
B. 3
C. 4
A. 2
B. 3
C. 4
D. 5
分析:
二分查找基本思想为:在有序序列中,取序列最中间的元素作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半边继续查找;若给定值大于中间记录的关键码,则在中间记录右半边区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。
二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)。
对于本题:首先第一次比较93和最中间的元素55,93>55,然后新的区间为【78,81,93,97,111】
第二次比较新区间最中间的元素93,发现93 = 93,查找成功,返回下标
查找两次,因此选A。
代码实现:python
#-*-coding=UTF-8 -*-s = raw_input().split(',')m = int(raw_input())s = list(s)#print sdef BinarySearch(str, m): count = 0#计数器,记录查找次数 leap = -1#布尔变量,-1表示查找失败 low = 0 high = len(str) - 1 while (low <= high): count += 1#计数器加1,表示新的查找开始 mid = (low + high) / 2 obj = int(str[mid])#因为输入的字符串,首先要转化成整型 if obj < m: low = mid + 1 elif obj > m: high = mid - 1 elif obj == m: print mid leap = 1#查找成功就将leap置1 break#跳出循环,查找结束 print 'Total %d Search(es)' % count if leap == -1: print 'Search No Data' print -1#leap值还是-1表示查找失败BinarySearch(s,m)
输出示例:
5,8,14,20,31,55,78,81,93,97,111
9
Total 4 Search(es)
Search No Data
-1
5,8,14,20,31,55,78,81,93,97,111
93
8
Total 2 Search(es)
Process finished with exit code 0
阅读全文
0 0
- 凤凰网招聘二分查找python实现
- Python实现二分查找
- Python实现二分查找
- python实现二分查找
- 二分查找 python实现
- python实现二分查找
- python实现二分查找
- Python实现二分查找
- python实现二分查找
- 用Python实现二分查找
- 用Python实现二分查找
- Python实现的二分查找
- Python实现二分查找法
- python的二分查找实现
- Python实现二分查找算法
- python实现的二分查找
- 二分查找及python实现
- 使用python实现二分查找
- Linux 命令的符号及意义
- java 数组初始化
- springmvc(2)--环境搭建和配置前端控制器
- Network and Distributed System Security (NDSS) Symposium 2017
- USACO1.2.4 回文平方数
- 凤凰网招聘二分查找python实现
- [数据结构] 数组与链表的优缺点和区别
- xss攻击笔记
- 查找一个字符串中第一个只出现两次的字符,要求时间复杂度为O(N)。-替换字符串中的空格为$$$。要求时间复杂度为O(N)
- Mavan依赖冲突的解决办法
- 使用CXF时因缺少对应jar包而报错问题汇总
- Tensorflow C++ 编译和调用图模型
- 在Mac pro上如何配置adb命令?
- 06.12 kickstart无人值守安装