Python二分查找
代码:
时间复杂度:O(log2n)
#!/usr/bin/env python
#coding:utf-8
import copy
from copy import deepcopy '''
def erfen(x,n,l): for i in range(n):
mid = len(l)//2
if (x == l[mid]):
print(mid)
break
elif (x < l[mid]):
for i in range(mid,n):
l.pop(l[i])
erfen(x, mid, l)
elif (x > l[mid]):
for i in range(0,mid):
l.pop(l[i])
erfen(x, mid, l) else:
for i in ll:
if (l[mid+1] == ll[i]):
aa = (-1)-(mid+1)
print(aa)
break if __name__=="__main__":
x = int(input())
n = int(input())
s = input().split()
l = [] for i in range(n):
l.append(int(s[i])) global ll
ll = deepcopy(l) for i in range(n):
if(x == ll[i]):
print(i)
else:
erfen(x, n, l)
''' def search_erfen(x,l):
start = 0
end = len(l) while(start<end):
mid = (start+end)//2
if (l[mid]>x):
end = mid
elif(l[mid]<x):
start = mid+1
elif(l[mid == x]):
return mid
return -1 if __name__=="__main__":
x = 5
l=[1,3,4,6,7,9]
print(search_erfen(x, l))
dd
Python二分查找的更多相关文章
- 两种方法实现Python二分查找算法
两种方法实现Python二分查找算法 一. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 arr=[1,3,6,9,10,20,30] def findnumber( ...
- Python二分查找算法
Python 二分查找算法: 什么是二分查找,二分查找的解释: 二分查找又叫折半查找,二分查找应该属于减值技术的应用,所谓减值法,就是将原问题分成若干个子问题后,利用了规模为n的原问题的解与较小规模( ...
- Python 二分查找
(非递归实现) def binary_search(alist, item): first = 0 last = len(alist)-1 while first<=last: midpoint ...
- python --- 二分查找算法
二分查找法:在我的理解中这个查找方法为什么会叫二分呢,我认为是将要查询的一个列表分成了两份,然后在利用某个值来进行比较,在一个不断循环的过程中来找出我们要找的某一个值. 废话不多说,先上代码: def ...
- python——二分查找算法
从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半 二分查找: 在一段数字内,找到中间值,判断要找的值和中间值大小的比较. 如果中间值大一些,则在 ...
- python二分查找模块bisect
bisect模块用于二分查找,非常方便. Bisect模块提供的函数有: 1.查找 bisect.bisect_left(a,x, lo=0, hi=len(a)) : 查找在有序列表a中插入x的in ...
- python 二分查找代码
二分查找的条件是必须是排好的数字 """二分查找""" def binary_searhc(arr, target): n = len(ar ...
- python 二分查找法
@source_data:数据集 @binary_num:要查找的数 @mid:中间数的键值 def binary_search(source_data,search_num): #传入数据集计算中间 ...
- 二分查找——Python实现
一.排序思想 二分(折半)查找思想请参见:https://www.cnblogs.com/luomeng/p/10585291.html 二.python实现 def binarySearchDemo ...
随机推荐
- hdu 3698 Let the light guide us(线段树优化&简单DP)
Let the light guide us Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 62768/32768 K (Java/O ...
- crossfire 346# B
Vasya has the square chessboard of size n × n and m rooks. Initially the chessboard is empty. Vasya ...
- java_method_Log输出日志的方法
package cn.com.qmhd.tools; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigura ...
- JSON字符串与JSON对象的区别及转换
JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法). JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用 ...
- mongo 多条件 查询
var query1 = Query<BaseManagerForCompanyModel>.EQ(q => q.sGuidBaseCompany, sGuidBaseCompany ...
- 实现O(1)时间复杂度带有min和max 函数的栈
仅仅是演示实现.不考虑栈使用的数据结构是vector 还是其它容器. 代码例如以下 #include <iostream> #include <vector> using na ...
- pat 1062. Talent and Virtue (25)
难得的一次ac 题目意思直接,方法就是对virtue talent得分进行判断其归属类型,用0 1 2 3 4 表示 不合格 sage noblemen foolmen foolmen 再对序列进行排 ...
- Swift: 基本操作符
这里只讲一下Swift中比较特殊的操作符,在其他语言中也存在操作符就不再讲了 Nil-Coalescing Operator: ?? The nil-coalescing operator (a ?? ...
- Linux入门基础教程
转载自:http://www.centoscn.com/CentOS/2015/0528/5555.html 1. 1 Linux操作系统简介 Linux是一套免费使用和自由传播的类Unix ...
- php模拟HTTP协议发送post请求方法
今天用到php模拟http发送post请求记录 代码如下: <?php $url = 'xxxx.com'; $data = 'a=one&b=two'; $data = urlenco ...