python实现二分法查找_python3 二分法查找

'''

二分法查找

有序列表

掐头去尾取中间

查找列表中xx在不在列表中,在,则返回索引值

'''

# lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99] #使用in判断,不使用二分法

# n = 49

# for i, v in enumerate(lst):

# if v == n:

# print("找到了,索引为%d" % i)

# break

# else:

# print("没找到.")

'''二分查找'''

# lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]

# n = 49

# left = 0

# right = len(lst) - 1

# while left <= right:

# mid = (left + right) // 2

# if n > lst[mid]:

# left = mid + 1

# elif n < lst[mid]:

# right = mid - 1

# else:

# print("找到了,索引为:%d" % mid)

# break

# else:

# print("没找到.")

'''使用递归调用完成二分法查找'''

lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]

n = 49

def binarySearch(lst, n, left, right):

if left <= right:

mid = (left + right)//2

if n < lst[mid]:

right = mid - 1

elif n > lst[mid]:

left = mid + 1

else:

return "找到了,索引为:%d" % mid

return binarySearch(lst, n, left, right)

else:

print("没找到.")

return -1

ret = binarySearch(lst, n, 0, len(lst)-1)

print(ret)

Python二分法查找及变种分析

基于Python3 普通二分法查找目标值的index 二分法查找的思路很简单,先确定好列表nums的一头start一尾end,中间值middle根据头尾数值之和用地板除法除以2,即(start + e ...

使用二分法查找mobile文件中区号归属地

#!/usr/bin/env python #coding:utf-8 ''' Created on 2015年12月8日 @author: DL @Description: 使用二分法查找mobil ...

js冒泡排序与二分法查找

冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i

Java基础(50):二分法查找的非递归实现和递归实现(完整代码可运行,参考VisualGO理解更佳)

一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者 ...

C语言的算法--------二分法查找

int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low

JavaScript用二分法查找数据等

//二分法查数据 var arr=[41,43,45,53,44,95,23]; var b=44; var min=0; var max=arr.length; for(var i=1;i

C#实现二分法查找算法

///  /// 二分法查找 ///  /// & ...

day17递归函数(二分法查找)

递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不 ...

C# -- 二分法查找

二分法查找:适用于已经排序好的数组 1.二分法查找(入门案例) static void Main(string[] args) { , , , , , , , , , , , , , , , , , ...

随机推荐

如何穿越到android底层

对于android开发,实际上大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到问题是不至于束手无策.因此有必要了解底层的工作机制. ...

Android图片加载库的理解

前言     这是“基础自测”系列的第三篇文章,以Android开发需要熟悉的20个技术点为切入点,本篇重点讲讲Android中的ImageLoader这个库的一些理解,在Android上最让人头疼是 ...

学习笔记——Maven settings.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${use ...

【mysql】用navicat连接虚拟机mysql出现错误代码(10038)

来源: http://www.cnblogs.com/ohmydenzi/p/5521121.html http://blog.csdn.net/chana1101/article/details/3 ...

将服务器返回的URL或者网址截取出来特定的字符,然后将字符返回,一般根据返回的字符判断用户是否登录等即时状态

1.用NSScanner过滤掉url中开头或者尾部存在的空格 2.用NSScanner的 setCharactersToBeSkipped方法忽略指定的字符集 3.用scanUpToString扫描去 ...

SharePoint 2013 网站定义中添加页面布局

今天在Visual Studio 2012中将页面布局打包到网站定义中. 新建Module “MasterPageGallary” 在Element中如下:

linux的grep命令

参考文档如下: linux grep命令 grep abb15455baeb4b23ab47540272ec47eb epps-sas.log | grep operateSettleBill exp ...

django集成ansibe实现自动化

动态生成主机列表和相关参数 def create_admin_domain(admin_node): workpath = BASE_DIR + '/tools/ansible/script' hos ...

HashMap是如何工作的

目录 1 HashMap在JAVA中的怎么工作的? 2 什么是哈希? 3 HashMap 中的 Node 类 4 键值对在 HashMap 中是如何存储的 5 哈希碰撞及其处理 6 HashMap 的 ...

洛谷P2699小浩的幂次运算

二分走一波,没想到题解的大佬做法 p_q 注意爆long long,所以先对数取一下上限 二分确定下限,然后输出 #include #include

你可能感兴趣的:(python实现二分法查找)