二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2...

但是需要注意:待查找的序列区间单调有序

例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位数或者中点center,下面分为三种情况:假如arr[center]>key,说明key在arr中心左边范围;

假如arr[center]

假如arr[center]=key,说明key在arr中心。

范围每次缩小一半,写个while的死循环知道找到为止。

二分法查找非常快且非常常用,但是唯一要求是要求数组是有序的

我的另一篇博客刚好介绍了冒泡排序可以去看看:http://www.cnblogs.com/TTyb/p/5726151.html

二分法的代码如下:1 #!/usr/bin/python3.4

2 # -*- coding: utf-8 -*-

3

4 def BinarySearch(arr, key):

5 # 记录数组的最高位和最低位

6 min = 0

7 max = len(arr) - 1

8

9 if key in arr:

10 # 建立一个死循环,直到找到key

11 while True:

12 # 得到中位数

13 # 这里一定要加int,防止列表是偶数的时候出现浮点数据

14 center = int((min + max) / 2)

15 # key在数组左边

16 if arr[center] > key:

17 max = center - 1

18 # key在数组右边

19 elif arr[center] < key:

20 min = center + 1

21 # key在数组中间

22 elif arr[center] == key:

23 print(str(key) + "在数组里面的第" + str(center) + "个位置")

24 return arr[center]

25 else:

26 print("没有该数字!")

27

28

29 if __name__ == "__main__":

30 arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]

31 while True:

32 key = input("请输入你要查找的数字:")

33 if key == " ":

34 print("谢谢使用!")

35 break

36 else:

37 BinarySearch(arr, int(key))

运行结果:

python二分法查找时间点_python有序查找算法:二分法相关推荐

  1. python实现kd树以及最近邻查找算法

    python实现kd树以及最近邻查找算法 一.kd树简介 二.kd树生成 1.确定切分域 2.确定数据域 3.理解递归树 4.python实现递归树代码 三.kd树上的最近邻查找算法 1.生成搜索路径 ...

  2. python二分法查找时间点_Python 二分法查找

    # 二分法查找主要的作用就是查找元素 lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据 num = int(input("请输入你要查找的元素信息:" ...

  3. python 查找算法_python快速查找算法应用实例

    文实例讲述了Python快速查找算法的应用,分享给大家供大家参考. 具体实现方法如下: import random def partition(list_object,start,end): rand ...

  4. python递归实现二分查找_python二分查找算法的递归实现

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

  5. python递归实现二分查找_python二分查找算法的递归实现方法

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

  6. python顺序查找的递归算法_Python实现查找算法

    一.顺序查找---O(n) 无序列表查找 def sequentialSearch(alist,item): pos = 0 found = False while pos < len(alis ...

  7. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

  8. python写公式函数_python的数学算法函数及公式用法

    之前老是跟大家说看久了Python,总感觉就像是很多的数学公式运算,大家一致觉得只是一点点像,那今天跟大家直接就说下叫"数学"算法的内容,这样大家再来品鉴下,是不是可以贯通使用的内 ...

  9. python实现冒泡排序视频_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

最新文章

  1. 数据表的三种基本操作(insert、delete、update)
  2. 如何干掉恶心的 SQL 注入?
  3. 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...
  4. 尼尔机器人技能快捷键_《尼尔机械纪元》连招操作技巧
  5. 【PMP学习笔记】:二、项目运行环境
  6. element-ui upload组件 上传文件类型限制
  7. leetcode 506 相对名次
  8. SPSS 数据编辑器界面 度量 名义 序号 标签
  9. iframe背景色透明
  10. 影响中国信息化全面预算管理的十大案例
  11. 计算机网络上有个红叉没无线,电脑无线网络连接不上显示红叉
  12. 小米摄像头 rtmp_如何使用外部摄像头进行Amazon Live
  13. lncRNA数据分析专题
  14. 光猫及二级路由器Openwrt均开启IPv6,满足双层网络内IPv6的获取
  15. Java获取IPv4/IPv6地理位置-IP地址库
  16. 区块链实际应用中痛点
  17. 怎么禁止计算机安装程序,电脑如何禁止安装软件,教你win10电脑禁止安装软件的设置教程...
  18. FireFox插件 - Greasemonkey
  19. 标准光照模型-半兰伯特模型
  20. python123一元二次方程_python练习题1-一元二次方程解

热门文章

  1. 春春幼儿园堆积木大赛_春云边车
  2. 象棋子 设计模式_通过设计国际象棋游戏了解策略模式
  3. 您需要了解的有关UI测试的所有信息
  4. Java中的HashSet
  5. stacktraces_Stacktraces告诉了事实。 但事实并非如此。
  6. 使用AWS Lambda的CloudWatch事件通知
  7. 使用Forge,WildFly Swarm和Arquillian开发微服务
  8. jetty eclipse_3个步骤实现Jetty和Eclipse集成
  9. threadlocal_了解ThreadLocal背后的概念
  10. 十大有用但又偏执的Java编程技术