python实现--顺序查找

python实现–顺序查找
python实现–折半查找
python实现–分块查找
python实现B/B+树

顺序查找(Sequential Search),也称线性查找,是一种简单直观的查找算法。它的基本思想是逐个遍历数据集合中的元素,直到找到目标元素或者遍历完整个数据集合。顺序查找适用于无序数据集合,时间复杂度为O(n),其中n为数据集合中的元素个数。

线性表的顺序查找

数据集合无序:在线性表的顺序查找中,数据集合是无序的,即元素的排列顺序是随机的。
遍历搜索:通过逐个遍历数据集合中的元素,逐个比较目标元素与当前元素是否相等,直到找到目标元素或者遍历完整个数据集合。

从数据集合的第一个元素开始逐个遍历,直到找到目标元素或者遍历完整个数据集合。
在遍历过程中,逐个比较当前元素与目标元素是否相等。
如果找到了目标元素,返回该元素的位置(索引);如果遍历完整个数据集合仍未找到目标元素,返回未找到的标记

def sequential_search(arr, target):"""顺序查找Parameters:arr (list): 待查找的数据集合(数组)target: 目标元素Returns:int: 如果找到目标元素,返回其在数组中的索引;如果未找到,返回-1。"""for i in range(len(arr)):if arr[i] == target:return ireturn -1# 测试
arr = [5, 3, 8, 2, 7, 1, 4]
target = 7
index = sequential_search(arr, target)
if index != -1:print(f"目标元素 {target} 在数组中的索引为:{index}")
else:print(f"未找到目标元素 {target}")

在这段代码中,sequential_search 函数接受一个数组 arr 和目标元素 target,并返回目标元素在数组中的索引(如果找到)或者-1(如果未找到)。函数通过遍历数组中的元素,逐个比较是否等于目标元素,直到找到目标元素或者遍历完整个数组。

有序表的顺序查找

数据集合有序:在有序表的顺序查找中,数据集合是有序的,即元素的排列顺序是按照某种规则排列的(例如升序或者降序)。
利用有序性:由于数据集合有序,可以利用这一特点进行查找。在遍历搜索过程中,可以根据目标元素与当前元素的大小关系,适当地缩小查找范围,提高查找效率。
优化搜索:例如,在升序排列的有序表中查找目标元素,如果当前元素大于目标元素,则可以提前终止搜索,因为后面的元素都比目标元素大。

对于有序表,数据是有序的,我们可以利用这一特点在查找过程中进行优化。如果当前元素大于目标元素,那么说明目标元素不在当前位置的右边;如果当前元素小于目标元素,那么说明目标元素不在当前位置的左边。因此,在有序表的顺序查找中,我们可以提前终止查找,从而提高效率。

def ordered_linear_search(arr, target):for i in range(len(arr)):if arr[i] == target:return i  # 如果找到目标元素,则返回索引elif arr[i] > target:return -1  # 如果当前元素大于目标元素,说明目标元素不存在return -1  # 如果遍历完整个数组仍未找到目标元素,则返回-1# 测试
arr = [1, 2, 3, 4, 5, 7, 8]
target = 7
index = ordered_linear_search(arr, target)
if index != -1:print(f"目标元素 {target} 在数组中的索引为:{index}")
else:print(f"未找到目标元素 {target}")

总结:
线性表的顺序查找适用于数据集合无序的情况,其时间复杂度为O(n),其中n为数据集合中的元素个数。而有序表的顺序查找利用了数据集合有序的特点,在一定程度上提高了查找效率,但其时间复杂度仍为O(n)。因此,在实际应用中,如果数据集合是有序的,可以考虑使用更高效的查找算法,例如二分查找。

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

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

相关文章

字节3-1大佬分享:字节跳动代码架构设计

最近和字节3-1的大佬交流,他分享了一些字节跳动代码架构设计理念,接下来用故事化的角度阐述。 面试官: 你好,今天我们要讨论的是享元模式。首先,你能解释一下什么是享元模式吗? 求职者: 当然可以。享元模式是一种结构…

怎么在学习强国网上发布文章,学习强国投稿发稿方法途径,附学习强国多少钱价格明细表

学习强国是一款受用户欢迎的学习软件,许多人希望在其平台上发布自己的文章,以分享和传播自己的学习成果和心得体会。那么,怎么在学习强国网上发布文章呢?接下来,我们将介绍一些投稿发稿的方法和途径。 首先&#xff0c…

Feed、RSS、Atom概念对比及ROME实战

概述 在豆瓣等网站里,经常会看到如下订阅Button: 本文记录一下相关概念学习成果。 Feed Feed:消息来源,一种资料格式,网站通过它将最新资讯传播给用户。用户能够订阅某网站的前提条件是网站有提供Feed。Feed被很多…

方程式工具包远程溢出漏洞图形界面版V0.3(内置永恒之蓝、永恒冠军、永恒浪漫等)

Part1 前言 大家好,我是ABC_123。我从年前到现在,一直在整理曾经写过的红队工具,逐步把自己认为比较好用的原创工具发出来给大家用一用,方便大家在日常的攻防比赛、红队评估项目中解放双手,节省时间精力和体力。本期给…

Linux智能网关结合Node-RED实现实时工业数据采集

工业4.0的发展,物联网技术在制造业中的应用越来越广泛。其中,基于Linux系统的工业物联网智能网关因其开放性、稳定性和安全性而备受青睐。这类智能网关创新性地集成了开源工具Node-RED,为从各种工业设备(如PLC)中高效收…

LInux系统架构----Apache与Nginx动静分离

LInux系统架构----Apache与Nginx动静分离 一.动静分离概述 Nginx的静态处理能力比较强,但是动态处理能力不足,因此在企业中常采用动静分离技术在LNMP架构中,静态页面交给Nginx处理,动态页面交给PHP-FPM模块处理。在动静分离技术…

elementui的el-upload图片上传到服务器的对象储存cos并且展示出来

目录 0.前提1.准备工作1.买一个腾讯云服务器(你可以买其他的),我这里是去买了61元一年的轻量级应用云服务器,操场系统是宝塔Linux2.买一个对象储存cos(这里腾讯云可以不用购买,因为开通的时候可以有180天的…

Linux 之八:Linux 的 Shell 编程

简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务 Shell 脚本 S…

云原生应用架构-微服务开发最佳实践

第1章云原生时代下的微服务 微服务架构是一种将单个应用程序开发为一组小型服务的方法,每个服务在自己的进程中运行,并通过轻量级的通信机制(如HTTP API)进行交互。这些服务围绕业务功能构建,可以通过完全自动化的部署…

单链表的基本操作--增删改查

增删改查 #include <stdio.h> #include <stdlib.h>#define OK 1 #define ERROR 0 typedef int Status; typedef char ElemType;typedef struct Lnode {ElemType data; //结点的数据域struct Lnode* next; //节点的指针域 }Lnode,*LinkList;初始化 Status InitLis…

【PCL】(二十八)超体素聚类分割点云

&#xff08;二十九&#xff09;超体素聚类分割点云 论文&#xff1a;Voxel Cloud Connectivity Segmentation - Supervoxels for Point Clouds supervoxel_clustering.cpp #include <pcl/console/parse.h> #include <pcl/point_cloud.h> #include <pcl/poin…

重启 explorer 进程的正确做法(二)

重启资源管理器进程的方法不唯一&#xff0c;但长期以来大家对实施方法用的不到位。 在上一篇中我认为&#xff1a;“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe )&#xff0c;其实这是不正确的。我…

21 卷积层里的多输入多输出通道【李沐动手学深度学习v2课程笔记】

目录 1. 多输入输出通道&相应代码实现 1.1 多输入 1.2 多输出 1.3 1x1 卷积层 1.4 小结 1. 多输入输出通道&相应代码实现 1.1 多输入 为了加深理解&#xff0c;我们实现一下多输入通道互相关运算。 简而言之&#xff0c;我们所做的就是对每个通道执行互相关操作&a…

CentOS 8启动流程

一、BIOS与UEFI BIOS Basic Input Output System的缩写&#xff0c;翻译过来就是“基本输入输出系统”&#xff0c;是一种业界标准的固件接口&#xff0c;第一次出现在1975年&#xff0c;是计算机启动时加载的第一个程序&#xff0c;主要功能是检测和设置计算机硬件&#xff…

题目:泡澡(蓝桥OJ 3898)

问题描述&#xff1a; 解题思路&#xff1a; 图解&#xff1a;&#xff08;以题目样例为例子&#xff09; 注意点&#xff1a;题目的W是每分钟最大出水量&#xff0c;因此有一分钟的用水量大于出水量则不通过。 补充&#xff1a;差分一般用于对一段区间每个元素加相同值&#x…

JZ76 删除链表中重复的结点

/*public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} } */import java.util.*; public class Solution {public ListNode deleteDuplication(ListNode pHead) {//初步想想法&#xff1a; 弄一个hashmap 然后进行key存储起来。然后 如果存…

PHP将PDF转成多个PNG文件

1. 安装Imagick之前&#xff0c;您需要确保已安装PHP。如果您尚未安装PHP&#xff0c;请运行以下命令安装PHP及其常用扩展&#xff1a; sudo apt install php php-cli php-imagick 2. 安装Imagick PHP扩展&#xff1a; sudo apt install php-imagick 3.安装后&#xff0c;您…

python 查询json文件的某一行并 替换json 键值字符串右边的内容

在Python中处理JSON文件时&#xff0c;通常不需要按照行来查询和替换内容&#xff0c;因为JSON数据结构是键值对组成的&#xff0c;并且不以“行”为单位。你可以直接读取整个JSON文件&#xff0c;解析成字典对象&#xff0c;然后根据键名查找并修改对应的值。 以下是一个示例…

hibernate查询时会无限循环,然后报错:Exception in thread “main“ java.lang.StackOverflowError

遇到的情况有&#xff1a; 1、建表对应的时候“意外”添加了索引。解决&#xff1a;需要把索引删掉 2、打印查询到的单个实体信息时&#xff0c;使用了toString()方法。解决&#xff1a;不用就行了 3、多对多映射&#xff0c;查询到的整个实体集合时&#xff0c;直接打印这个…

web前端框架

目前比较火热的几门框架: React React是由Facebook(脸书)开发和创建的开源框架。React 用于开发丰富的用户界面&#xff0c;特别是当您需要构建单页应用程序时。它是最强大的前端框架。 弊端: 您不具备 JavaScript 的实践知识&#xff0c;则建议不要使用 React。同样&#x…