当前位置: 首页 > news >正文

二分查找基本原理

二分查找基本原理

  • 1.二分查找
    • 1.1 基本概念
    • 1.2 二分查找查找步骤
      • 1.2.1 中间索引不能整除,取整数作为中间索引
      • 1.2.2 索引不能整除,整数+1作为中间索引
    • 1.3 二分查找大O记法表示
  • 2. 二分查找代码实现

1.二分查找

1.1 基本概念

  • 二分法(折半查找)是一个查找算法
  • 要求:数据必须是有序列表
  • 核心思想:掐头结尾取中间

1.2 二分查找查找步骤

1.2.1 中间索引不能整除,取整数作为中间索引

在这里插入图片描述

1.2.2 索引不能整除,整数+1作为中间索引

在这里插入图片描述

1.3 二分查找大O记法表示

元素个数步骤次数
21
42
83
164
Nlog2Nlog_2^{N}log2N
  • 二分查找大O记法表示:log2Nlog_2^{N}log2N
    • 意味着该算法当数据量翻倍时,步数加 1。

2. 二分查找代码实现

# 方式一
lis = [1, 12, 14, 15, 23, 35, 435, 567, 578, 656, 789, 1234]
n = int(input('请输入你要查找的数:'))
left = 0
right = len(lis) - 1
while left <= right:middle = (left + right) // 2print(f"当前中间索引为{middle},值为{lis[middle]}")if n > lis[middle]:left = middle+1elif n < lis[middle]:right = middle-1else:print('找到了,他在索引为%s位置' % middle)break
else:print('没有这个数据')# 方式二
lis = [1, 12, 14, 15, 23, 35, 435, 567, 578, 656, 789, 1234]
n = int(input('请输入你要查找的数:'))
left = 0
right = len(lis) - 1
while left <= right:middle = (left + right) // 2if (left + right) % 2 != 0:middle = ((left + right) // 2)+1print(f"当前中间索引为{middle},值为{lis[middle]}")if n > lis[middle]:left = middle+1elif n < lis[middle]:right = middle-1else:print('找到了,他在索引为%s位置' % middle)break
else:print('没有这个数据')

在这里插入图片描述

http://www.lryc.cn/news/1100.html

相关文章:

  • 【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~
  • UE4:使用样条生成随机路径,并使物体沿着路径行走
  • 计算机组成原理(判断题)
  • error: failed to push some refs to ... 就这篇,一定帮你解决
  • DAMA数据管理知识体系指南之数据仓库和商务智能管理
  • PHP的五种常见设计模式
  • 教你搞懂线段树,从基础到提高
  • C语言进阶——自定义类型:结构体
  • SpringSecurity学习笔记01
  • Python语言零基础入门教程(十一)
  • 现货白银基础知识
  • 数据库原理及应用基础知识点
  • 【数据结构】栈(stack)
  • 初识shell
  • 程序员如何编写好开发技术文档 如何编写优质的API文档工作
  • 二级C语言操作例题(四十)
  • vue-router 源码解析(二)-创建路由匹配对象
  • 分布式新闻项目实战 - 10.Long类型精度丢失问题
  • 如何将本地jar包安装到maven仓库
  • C++:map和set的认识和简单使用/关联式容器
  • 网络工程师一定要学会的知识点:OSPF,今天给大家详细介绍
  • 企业管理的三大基石及其关系
  • 6个月软件测试培训出来后的感悟 —— 写给正在迷茫是否要转行或去学软件测试的学弟们
  • IoU Loss综述(IOU,GIOU,CIOU,EIOU,SIOU,WIOU)
  • Node=>Express中间件 学习3
  • 【STM32笔记】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作的问题)
  • 【前端CSS面试题】2023前端最新版css模块,高频15问
  • Linux命令大全,赶紧收藏!
  • 大数据入门怎么学习
  • 用于异常检测的深度神经网络模型融合