1. 算法简介

news2024/12/23 12:37:30

1.2 二分查找

二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置; 否则返回null 。

使用二分查找时,最多需要检查log n 个元素。

仅当列表是有序的时候,二分查找才管用。


完整代码如下:

def binary_search(list, item):
    low = 0
    high = len(list)-1
    while low <= high:
        mid = int((low+high)/2)
        guess = list[mid]
        if guess == item:
            return mid
        elif guess < item:
            low = mid + 1
        else:
            high = mid - 1
    return None
    
my_list = [1,3,5,7,9]
print(binary_search(my_list, 3))
print(binary_search(my_list, -1))

一般而言,应选择效率最高的算法,以最大限度地减少运行时间或占用空间。

最多需要猜测的次数与列表长度相同,这被称为线性时间 (linear time)。

简单查找:线性时间 O(n)
二分查找:对数时间 O(log n)



1.3 大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快。

大O表示法指出了最糟情况下的运行时间。


5种大O运行时间:

  • O (log n ),也叫对数时间 ,这样的算法包括二分查找。
  • O (n ),也叫线性时间 ,这样的算法包括简单查找。
  • O (n * log n ),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。
  • O ( n 2 n^2 n2 ),这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。
  • O (n !),这样的算法包括接下来将介绍的旅行商问题的解决方案 ——一种非常慢的算法。

按从快到慢的顺序列出了使用这些算法绘制网格所需的时间:


算法的速度指的并非时间,而是操作数的增速。

谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。

算法的运行时间用大O表示法表示。



References:
《 算法图解》—— 第1章 算法简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XCTF1-web php

场景一&#xff1a;simple_php 题目描述 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 进入场景 给了php代码&#xff0c;分析一下 GET传入两个参数a,b aaa_GET[“a”];其中的是为了防止没有$_GET[‘a’]出现错误提示 $a0 and a&#xff1a;a等于0,且a是…

Spring之Bean生命周期之二--- Instantiation阶段

在BeanFactory中&#xff0c;主要的流程就是创建Bean的过程&#xff0c; // 核心方法: 创建Bean实列对象,并且生命周期的动作大部分都在这里。Object beanInstance doCreateBean(beanName, mbdToUse, args);Bean的生命周期包括: 实例化设置属性值初始化值销毁 实例化Bean在…

[附源码]java毕业设计网上报销管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

西电计网ARP欺骗实验

ARP欺骗实验 文章目录ARP欺骗实验Cloud云设备连接本机网卡ARP欺骗实验Cain基本设置主机发现ARP欺骗的原理实现Cain干了啥DNS欺骗实验Cain干了啥欺骗转发实验Cloud云设备 想查一下华为官方使用手册,看看云到底是个啥,但是查不到. 在ensp模拟器中云设备这篇博客上这样写的: eNS…

基于K-means(K均值)聚类算法的图像特征分割研究-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、K-means 聚类算法原理✳️ 三、图像聚类分割实例✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 图像分割是一个跨学科的研究方向&#xff0c;涉及人工智能、机器学习、模式识别等。随着计算机技术的不断发展&#xff0c;图像分…

java毕业设计——基于java+Socket+sqlserver的网络通信系统设计与实现(毕业论文+程序源码)——网络通信系统

基于javaSocketsqlserver的网络通信系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaSocketsqlserver的网络通信系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于jav…

2022-11-20 每日打卡:Leetcode第 320 场周赛

2022-11-20 每日打卡&#xff1a;Leetcode第 320 场周赛 题解主要参考&#xff1a;https://www.bilibili.com/video/BV1A3411f7H3/?spm_id_from333.999.0.0&vd_source6fcf135348bf11256bcd756a96851533 6241. 数组中不等三元组的数目 对于排列组合问题&#xff0c;关注“…

实现微服务:匹配系统(中)

目录 1、同步两个玩家的位置思路解析 2、实现了三个棋盘的同步原理 3、初始化一下我们的playerAplayerB 4、什么是线程为什么要用多线程&#xff1f; 5、如何去实现等待两名玩家输入 6、前端向后端发消息 7、在数据库中创建表record 1、同步两个玩家的位置思路解析 除了地…

koa框架(一) 认识koa

koa ​koa是express原班人马打造的轻量、健壮、富有表现力的nodejs框架。目前koa有koa1和koa2两个版本&#xff1b;koa2依赖Node.js 7.6.0或者更高版本&#xff1b;koa不在内核方法中绑定任何中间件&#xff0c;它仅仅是一个轻量级的函数库&#xff0c;几乎所有功能都必须通过…

[附源码]java毕业设计网上点餐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

干货分享丨第五届“大数据安全与隐私计算”学术会议

开放隐私计算 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区”。 177篇原创内容 …

网页设计大作业模板-网页设计大作业(文房四宝 5页)-实训素材

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作| HTML期末大学生网页设计作业&#xff0c;W…

通过STM32F103C8T6配置完成基于SPI协议的0.96OLED屏显

文章目录前言一、SPI协议1、应用2、组成二、OLED屏显和汉字点阵编码原理1、汉字点阵编码原理2、OLED屏显三、OLED模块四、显示自己的学号和姓名五、显示温湿度&滑动显示长字符六、总结七、参考资料前言 硬件&#xff1a;stm32f103c8t6 核心板软件&#xff1a;keil5 mdk软件…

混沌引力搜索算法(CGSA)解决三个机械工程设计问题(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

_linux 进程间通信(匿名管道)

文章目录1. 匿名管道2. 利用通过匿名管道实现进程间通信2.1 实现思路2.2 父子进程实现通信的简单代码2.3 结果展示如下3. 总结管道特点4. 扩展&#xff08;好玩的--简单内存池&#xff09;思路&#xff1a;代码&#xff1a;1. 匿名管道 查看手册(man)&#xff1a; 翻译 #incl…

[附源码]计算机毕业设计JAVA基于JSP技术的新电商助农平台

[附源码]计算机毕业设计JAVA基于JSP技术的新电商助农平台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …

Amine-PEG-Azide,NH2-PEG-N3,胺-PEG-叠氮PEG试剂供应

1、名称 英文&#xff1a;Amine-PEG-Azide&#xff0c;NH2-PEG-N3 中文&#xff1a;胺-聚二乙醇-叠氮 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;DSPE PEG Azide PEG 4、分子量&#xff1a;可定制&#xff0c;NH2-PEG-N3 2000、胺-聚二乙醇-叠氮 10000、NH2-PEG-…

从零开始做一款Unity3D游戏<一>——亲自上手使用Unity

游戏设计入门 游戏设计文档 Hero Born游戏的单页文档 构建关卡 创建基本图形 在三维中思考 材质 白盒环境 光照基础 创建光源 Light组件的属性 在Unity中制作动画 创建动画片段 记录关键帧 曲线与切线 粒子系统 总结 本文主要来自<<C#实践入门>>哈…

【单片机】独立看门狗IWDG初始化

目录 看门狗简介&#xff1a; 初始化例子&#xff1a; 看门狗使能&#xff1a; 写保护&#xff1a; 看门狗重载&#xff1a; 看门狗复位时间计算&#xff1a;基本上看stm中文手册对照框图就很明确 看门狗简介&#xff1a; 此器件具有两个嵌入式看门狗外设&#xff0c;具有…

3-4数据链路层-局域网

文章目录一.基本概念1.网络拓扑2.传输介质3.介质访问控制方法4.局域网的分类5.逻辑链路控制&#xff08;LLC&#xff09;子层与媒体接入控制&#xff08;MAC&#xff09;子层二.以太网&#xff08;一&#xff09;以太网的传输介质与网卡1.传输介质2.网卡&#xff08;二&#xf…