线性查找和二分查找
线性查找
''' 列表线性查找 线性查找就是从列表起始位置一次查询,直到查询到目标值,或者遍历整个列表完毕才结算查找过程 线性查找复杂度 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) 走的线性查找 '''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2022-05-20 Hbase APi