Python 学习 第三册 第10章 一些简单的算法

---用教授的方式学习。

目录

10.1 搜索算法

10.1.1 线性搜索与间接引用元素

10.1.2 二分查找和利用假设

10.2 排序算法

10.2.1 归并排序

10.2.2 将函数用作参数

10.3 散列表


10.1 搜索算法

本节会研究两种搜索列表的算法,每种方法都满足以下规范:

def search(L, e):"""假设L是列表如果e是L中的元素,则返回True,否则返回False"""

10.1.1 线性搜索与间接引用元素

Python使用以下算法确定列表中是否有某个元素:

for i in range(len(L)): if L[i] == e: return True 
return False

10.1.2 二分查找和利用假设

有序列表的线性搜索

def search(L, e): """假设L是列表,其中元素按升序排列。ascending order. 如果e是L中的元素,则返回True,否则返回False""" for i in range(len(L)): if L[i] == e: return True if L[i] > e: return False return False

这种算法可以缩短平均运行时间,但不会改变最差情形下的算法复杂度,因为在最差情形下还是需要检查L中的每个元素。

二分查找的思路非常简单:

(1) 选择一个可以将列表L大致一分为二的索引i;

(2) 检查是否有L[i] == e;

(3) 如果不是,检查L[i]大于还是小于e;

(4) 根据上一步的结果,确定在L的左半部分还是右半部分搜索e。

给定算法结构之后,很显然,实现二分查找的最简单直接的方式就是使用递归,如下所示。

递归二分查找

def search(L, e): """假设L是列表,其中元素按升序排列。ascending order. 如果e是L中的元素,则返回True,否则返回False""" def bSearch(L, e, low, 

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

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

相关文章

Android OTA 升级基础知识详解+源码分析

前言: 本文仅仅对OTA升级的几种方式的概念和运用进行总结,仅在使用层面对其解释。需要更详细的内容我推荐大神做的全网最详细的讲解: https://blog.csdn.net/guyongqiangx/article/details/129019303?spm1001.2014.3001.5502 三种升级方式…

前端高级架构师课程(总共111门课程,1150GB)

由阿里P8前端架构师亲自精心筛选整理的全网最新最具价值的前端进阶学习课程! 培训机构原版教程! 课程知识点和一线大厂完美匹配! 所有课程资源完整成套,不残缺,不拼凑,不拆开乱发! 这系列课程包…

JavaScript-拓展简单和引用数据类型

学习目标: 掌握拓展简单和引用数据类型 学习内容: 拓展-术语解释拓展-基本数据类型和引用数据类型 拓展-术语解释: 拓展-基本数据类型和引用数据类型: 简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型…

第一百一十一节 Java面向对象设计 - Java泛型方法和构造函数

Java面向对象设计 - Java泛型方法和构造函数 泛型方法 我们可以在方法声明中定义类型参数,它们在方法的返回类型之前的尖括号中指定。 包含泛型方法声明的类型不必是泛型类型。 我们可以在非静态方法声明中使用为泛型类型指定的类型参数。 例子 以下代码显示如…

如何快速在一台新电脑上安装 Python 环境

一、下载miniconda 1.下载 我们可以在清华大学开源软件镜像站下载最新版本的miniconda。如:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Windows-x86_64.exe 2.安装 双击exe文件安装,如果没有特殊的需求&#x…

UML详解

1.what is the UML UML 全称是 Unified Modeling Language(统一建模语言),它以图形的方式来描述软件的概念 2.它存在的目的 UML 的目标是通过一定结构的表达,来解决现实世界到软件世界的沟通问题。 3.什么是模,…

127.0.0.1与本机IP地址的区别

大家好,今天我们来聊聊一个在网络世界中常常被提及,但可能对于非专业人士来说还有些模糊的概念——127.0.0.1与本机IP地址。这两个地址在网络通信中都扮演着重要的角色,但它们之间又有着怎样的区别呢?让我们一起来探究一下。 一、…

《庆余年》在前,《玫瑰的故事》在后,阅文发现“新大陆”?

奋笔疾书的网文作家,即将迎来网络文学的高光时代。 近日,阅文集团于安徽省举办2024阅文创作大会。现场数据显示,2023年阅文活跃作家平均收入增长32%,创造近五年最大增幅。其中,中位数作家收入增幅达135%,已…

K8s的资源对象

资源对象是 K8s 提供的一些管理和运行应用容器的各种对象和组件。 Pod 资源是 K8s 中的基本部署单元,K8s通过Pod来运行业务应用的容器镜像 Job 和 CronJob 资源用于执行任务和定时任务,DaemonSet 资源提供类似每个节点上守护进程, Deployment…

Parallelize your massive SHAP computations with MLlib and PySpark

https://medium.com/towards-data-science/parallelize-your-massive-shap-computations-with-mllib-and-pyspark-b00accc8667c (能翻墙直接看原文) A stepwise guide for efficiently explaining your models using SHAP. Photo by Pietro Jeng on Unsplash Int…

【调试记录】:windows查看一个文件夹下(多个子文件夹)每个子文件夹中文件的数量分别是多少

查看文件夹小所有文件的数量,包括子文件中的文件的数量 Get-ChildItem -Path "C:\path\to\your\directory" -Recurse | Measure-Object查看一个文件夹下多个子文件每个子文件夹中文件的数量分别是多少 $targetFolder "C:\path\to\your\directory&…

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器 语言 :Verilg HDL EDA工具:ISE、Vivado、Quartus II 军用FPGA软件 Verilog语言的编码准测之触发器、锁存器一、引言二、基本编程规范之触发器强制准则1---禁止在同一个 always 语句中混合使用有复位…

CPU的体系结构分类

CPU的体系架构主要可以分为两大类:复杂指令集计算机(CISC)架构和精简指令集计算机(RISC)架构。这两大类架构下又衍生出了多种具体的架构类型。 一、复杂指令集计算机(CISC)架构 x86架构&#…

随便聊聊网络游戏开发模式

本文仅是闲聊罢了,并非开发教程,有意依此学习的同学注意一下. 就网络游戏开发而言,目前主流的同步方式大概是以下两种: 帧同步 顾名思义,就是按"帧"(一般指逻辑帧)来进行网络同步,一般实现上,都是客户端按"帧"来发送自己的操作数据(无操作也是一种操作(也…

jquey+mybatis-plus实现简单分页功能

这篇文章介绍一下怎么通过JQuery结合mybatis-plus的分页插件实现原生HTML页面的分页效果,没有使用任何前端框架,主要是对前端知识的应用。 创建Springboot项目 Intellij IDEA中创建一个Springboot项目,项目名为pager。 添加必须的依赖包 修…

【Linux】—MySQL安装

文章目录 前言一、下载官方MySQL包二、下载完成后,通过xftp6上传到Linux服务器上三、解压MySQL安装包四、在安装目录下执行rpm安装,请按顺序依次执行。五、配置MySQL六、启动MySQL数据库七、退出,重新登录数据库 前言 本文主要介绍在Linux环境…

创建Docker容器与外部机通信(独立IP的方式)

需求:希望外部可以直接通过不同IP地址访问宿主机上的Docker容器,而不需要端口映射(同一个IP不同的端口与外部通讯),这通常涉及到在宿主机的网络层面进行更高级的配置,比如使用IP伪装(IP masquer…

详解 ClickHouse 的安装部署

一、安装前准备 关闭防火墙 firewall-cmd --state #查看状态sudo systemctl stop firewalld #关闭防火墙修改 Linux 系统打开文件数限制和用户进程数限制 #查看打开文件数限制和用户进程数限制 ulimit -a#在Hadoop102上修改打开文件数限制和用户进程数限制 sudo vim /etc/secur…

团队协同渗透测试报告输入输出平台部署

目录 简介 文章来源 部署环境 文件下载 开始安装 系统初始化 免责声明 结语 简介 因应监管部需求,国内访问Docker源pull镜像开始变得复杂且困难起来了,大佬github给的在线/离线安装脚本跑了很久也无法拉取到镜像,所以将以前的镜像打…

类的继承性(Java)

本篇学习面向对象语言的第二特性——继承性。 1 .为什么需要继承 我们来举个例子:我们知道动物有很多种,是一个比较大的概念。在动物的种类中,我们熟悉的有猫(Cat)、狗(Dog)等动物,它们都有动物的一般特征(比如能够吃…