python二分查找算法注释_算法:二分查找(python版)

#!/usr/bin/env python

#coding -*- utf:8 -*-

#二分查找

#时间复杂度O(logn)

#一个时间常量O(1)将问题的规模缩小一半,则O(logn)

import random

def binary_search(arraya, x, N):

low = 0

high = N-1

notfound = -1

while low<=high:

#这里是//2,写一个/会出错,因为python3中3/2=1.5,3//2=1

middle = (low+high)//2

if(arraya[middle] < x):

low = middle + 1

#注意这里是elif,一开始我写成了if会出错

elif(arraya[middle] > x):

high = middle - 1

else:

return middle

return notfound

if __name__=='__main__':

n = int(input("所要生成数组的长度:"))

a = []

for i in range(n):

x = random.choice(range(100))

a.append(x)

#这里排序就用内置的吧!

#列表可以被修改

a.sort()

print("生成的数组(从小到大):",a)

b = int(input("想要查找的x值为:"))

if(binary_search(a, b, n)==-1):

print("所要查找的x不在该数组里!")

else:

print("x的下标为", binary_search(a, b, n))

数据结构和算法设计专题之---二分查找(Java版)

1.前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后:将要查找的值和数组的中值 ...

经典算法二分查找循环实现Java版

二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间 ...

二分查找-python

约12年年底的时候,接触了python不到半年的样子,入门是直接实现GUI测试case的.今天面试地平线机器人,发现忘得差不多了- -. 当时的问题是这样的 写一个二分查找是实现,我好像不记得二分查找 ...

南理第八届校赛同步赛-F sequence//贪心算法&;二分查找优化

题目大意:求一个序列中不严格单调递增的子序列的最小数目(子序列之间没有交叉). 这题证明贪心法可行的时候,可以发现和求最长递减子序列的长度是同一个方法,只是思考的角度不同,具体证明并不是很清楚,这里就 ...

二分查找——Python实现

一.排序思想 二分(折半)查找思想请参见:https://www.cnblogs.com/luomeng/p/10585291.html 二.python实现 def binarySearchDemo ...

莫队算法/二分查找 FZU 2072 Count

题目传送门 题意:问区间内x的出现的次数分析:莫队算法:用一个cnt记录x的次数就可以了.还有二分查找的方法 代码: #include #include

二分查找-Java版

/** * * 二分查找算法 * * * * @param srcArray 有序数组 * * @param target 查找元素 * * @return srcArray数组下标,没找到返回-1 ...

#C++初学记录(贪心算法#二分查找)

D - Aggressive cows 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 < ...

Java-数据结构与算法-二分查找法

1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

Java算法 -- 二分查找

折半查找,要求待查找的序列有序.每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程.直到 ...

随机推荐

项目管理学习笔记之五.沟通协调能力I

项目管理个人能力培养--沟通协调能力在项目管理当中,怎么样把握好沟通?它有些什么的基本原则?是我们本章要讨论的. 一.电影中的四段对话 冯小刚的电影中有四段精神 ...

CSS 超出隐藏问题

.dropdown-navbar>li:last-child>a { border-bottom: 0 solid #DDD; border-top: 1px dotted transpa ...

关闭Outlook时最小化

公司用的是阿里邮箱,foxmail客户端总是把已读邮件又标记成未读,又赶上最近招聘,真是深受其烦.已经无法忍受了,决定换了它,重新用起最强客户端outlook. Outlook解决了foxmail的问 ...

JavaScript DOM高级程序设计 2.4-try{}catch{}--我要坚持到底!

先看一段有异常的语句 var sound = 'Roar!'; function myOrneryBeast() { this.style.color='green';//window没有style属 ...

linux使用工具记录

linux工具查询手册: http://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html

线段树练习 3&;&;P3372 【模板】线段树 1

题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...

查看 设置mysql时区

# 查看时区 show variables like '%time_zone%'; system_time_zone CST time_zone SYSTEM # 设置全局 set global ti ...

Django REST framework 第一章 Serialization

此章节将会介绍多种构成REST framework的重要模块,在每个部分如何一起配合上提供一个综合的全方面的了解. 准备 同样的创建一个新项目,创建一个新的app,将rest_framework跟新建 ...

ArcEngine中加载ArcGIS Server地图服务

代码如下: private void addMapServerLayer(object sender, EventArgs e)  {             IActiveView pActiveV ...

[CF981F]Round Marriage[二分+霍尔定理]

题意 洛谷 分析 参考了Icefox 首先二分,然后考虑霍尔定理判断是否有完美匹配.如果是序列的话,因为这里不会出现 \(j

你可能感兴趣的:(python二分查找算法注释)