python二分法查找时间点_python有序查找算法:二分法
二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以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有序查找算法:二分法相关推荐
- python实现kd树以及最近邻查找算法
python实现kd树以及最近邻查找算法 一.kd树简介 二.kd树生成 1.确定切分域 2.确定数据域 3.理解递归树 4.python实现递归树代码 三.kd树上的最近邻查找算法 1.生成搜索路径 ...
- python二分法查找时间点_Python 二分法查找
# 二分法查找主要的作用就是查找元素 lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据 num = int(input("请输入你要查找的元素信息:" ...
- python 查找算法_python快速查找算法应用实例
文实例讲述了Python快速查找算法的应用,分享给大家供大家参考. 具体实现方法如下: import random def partition(list_object,start,end): rand ...
- python递归实现二分查找_python二分查找算法的递归实现
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- python递归实现二分查找_python二分查找算法的递归实现方法
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- python顺序查找的递归算法_Python实现查找算法
一.顺序查找---O(n) 无序列表查找 def sequentialSearch(alist,item): pos = 0 found = False while pos < len(alis ...
- python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...
- python写公式函数_python的数学算法函数及公式用法
之前老是跟大家说看久了Python,总感觉就像是很多的数学公式运算,大家一致觉得只是一点点像,那今天跟大家直接就说下叫"数学"算法的内容,这样大家再来品鉴下,是不是可以贯通使用的内 ...
- python实现冒泡排序视频_Python实现冒泡排序算法的完整实例
冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...
最新文章
- 数据表的三种基本操作(insert、delete、update)
- 如何干掉恶心的 SQL 注入?
- 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...
- 尼尔机器人技能快捷键_《尼尔机械纪元》连招操作技巧
- 【PMP学习笔记】:二、项目运行环境
- element-ui upload组件 上传文件类型限制
- leetcode 506 相对名次
- SPSS 数据编辑器界面 度量 名义 序号 标签
- iframe背景色透明
- 影响中国信息化全面预算管理的十大案例
- 计算机网络上有个红叉没无线,电脑无线网络连接不上显示红叉
- 小米摄像头 rtmp_如何使用外部摄像头进行Amazon Live
- lncRNA数据分析专题
- 光猫及二级路由器Openwrt均开启IPv6,满足双层网络内IPv6的获取
- Java获取IPv4/IPv6地理位置-IP地址库
- 区块链实际应用中痛点
- 怎么禁止计算机安装程序,电脑如何禁止安装软件,教你win10电脑禁止安装软件的设置教程...
- FireFox插件 - Greasemonkey
- 标准光照模型-半兰伯特模型
- python123一元二次方程_python练习题1-一元二次方程解