首页 > 其他分享 >线性查找和二分查找

线性查找和二分查找

时间:2023-05-20 09:45:45浏览次数:40  
标签:二分 list value element 查找 线性

线性查找

'''
列表线性查找
线性查找就是从列表起始位置一次查询,直到查询到目标值,或者遍历整个列表完毕才结算查找过程
线性查找复杂度 O(n),比较慢
'''

from call_time import *

@call_time
def liner_search(list, value):
    for index, element in enumerate(list):
        if element == value:
            return index
    #如果找不到就返回 None
    return None

二分查找

'''
二分查找:从中间位置进行查找,大了就往左边移动一般,小了往左边移动一般,每次查找缩小一半的候选区
前提:必须是有序列表才可以使用二分查找,二分复杂度 Log(n) 比较快
'''

@call_time
def binary_search(list, value):
    low = 0
    high = len(list) - 1
    while low <= high:
        '''候选区有值,需要继续查找'''
        mid = (low + high) // 2  # 整除
        if list[mid] == value:
            return mid
        elif list[mid] > value:
            high = mid - 1  # right 左移
        else:
            low = mid + 1  # left 右移动

    #如果找不到就返回 None
    return None

补充和说明

'''
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
seq = ['one', 'two', 'three']
for key,element in enumerate(seq):
    print(key,element)
输出
0 one
1 two
2 three
'''
'''
nums.index(n) 走的线性查找
'''

 

标签:二分,list,value,element,查找,线性
From: https://www.cnblogs.com/wdh01/p/17383385.html

相关文章

  • 线性dp
    P2285[HNOI2004]打鼹鼠这道题目类似最长上升子序列这是一道线性dp的题目怎么设置状态呢?f[i]:表示最后一只鼹鼠选择i的最大值转移:f[i]=max(f[i],f[j]+1)#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+10;intf[N];structwy{ intt,x,......
  • Tensorflow变量管理及模型持久化,实现实现线性回归
    变量管理随着神经网络的结构更加复杂,参数更多时,需要一个更好的方式来传递和管理变量。在TF中提供了通过变量的名字来创建或者获取一个变量的机制,通过这个机制不同函数可以直接通过变量的名字来直接使用变量。这机制主要是通过tf.get_variable和tf.variable_scope实现的。tf.get_......
  • Codeforces 1832F - Zombies(wqs 二分)
    等价于最大化\(n\)对区间的交集之和。而对于每个\([l_i,r_i)\)我们肯定会选择与其交集最大的\([p,p+m)\)与之匹配,所以我们只用对\(k\)个区间进行决策即可。首先先发现一个东西:存在一种最优解,使得对于每个选择的区间\([p,p+m)\),要么有\(p=l_i\),要么有\(p+m=r_i\),也就是......
  • MS SQL Server 排查阻塞和查找被锁语句
    --方法1SELECT'资源类型'=t1.resource_type,'来源数据库'=CONVERT(CHAR(25),DB_NAME(resource_database_id)),'数据库中与资源相关联的实体的ID'=t1.resource_associated_entity_id,'锁模式'=t1.request_mode, --锁的模式:S-共享锁,U-更新锁,X-排他锁,IS/IU/IX-意向......
  • [D盾_web查杀]网站后面查找工具
    本文转载自:[D盾_web查杀]网站后面查找工具更多内容请访问钻芒博客:https://www.zuanmang.net在一定程度上还是有点用的,从网上下载来的源码模板可能并没那么干净。官网:http://www.d99net.net/官网最新版本下载(2019-6-29)『D盾_防火墙』版本:v2.1.4.9:http://www.d99net.net/down......
  • 华为OD机试 查找单入口空闲区域
    华为OD机试【4大宝典】再次上新题!①Python解华为机试题:https://dream.blog.csdn.net/article/details/129221789②C++解华为机试题:https://dream.blog.csdn.net/article/details/129472919③Java解华为机试题:https://dream.blog.csdn.net/article/details/129652513④......
  • redhat7查找已接网线但是还未配置IP的网卡接口
    方法一:nmcli输出中参数WIRED-PROPERTIES.CARRIER为on即为接网线网卡#nmclideviceshow|grep-i-E"device|carrier"GENERAL.DEVICE:                        ens224WIRED-PROPERTIES.CARRIER:              on如下命令将输出内......
  • 002 线性回归的简洁实现
    1.创建数据集数据集的手工创建和上一节一样,人为设置true_w,true_b,以及num_examples(样本的总数量),调用synthetic_data()函数来创建。上一节中我们已经用#@save将这个函数保存在了d2l包中,这里我们直接调用就可以了:2.读取数据集load_array()这个函数接受数据集的features,lab......
  • 动手学深度学习(一) 线性回归
    线性回归主要内容包括:线性回归的基本要素线性回归模型从零开始的实现线性回归模型使用pytorch的简洁实现线性回归的基本要素模型为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与......
  • 查找文本字符串,并返回所在行数据
    #include<iostream>#include<string>#include<Windows.h>#include<fstream>#include<sstream>#include<signal.h>#include<io.h>#include<vector>#include<process.h>#include<cstdio>#include<as......