基本查找(顺序查找)

基本查找/顺序查找

      • 基本思想
      • 思路
      • 代码示例
      • 输出结果

​ 说明:顺序查找适合于存储结构为数组或者链表。

基本思想

顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表示查找失败。

基本查找是一种常见的算法用于在集合中查找某个特定元素。它可以应用于各种数据结构,如数组、链表、树等。

思路

在这里插入图片描述

基本查找算法的思路很简单:遍历集合中的每个元素,逐一与目标元素进行比较,直到找到目标元素或者遍历完所有元素。如果找到目标元素,算法返回该元素的位置或者其他相关信息;如果遍历完所有元素仍然没有找到目标元素,算法返回未找到的信息。

基本查找算法的时间复杂度为 O(n),其中 n 是集合中元素的个数。这是因为在最坏情况下,需要遍历整个集合才能找到目标元素。

代码示例

需求:定义一个方法利用基本查找,数据如下:{13, 52, 1314, 10, 17, 52, 123, 147, 52, 81, 90, 103, 23, 52, 7, 79}

要求1:查询某个元素是否存在
要求2:查询某个元素是否存在,如果存在,返回其索引,不考虑重复的数据
要求3:查询某个元素是否存在,如果存在,返回其索引,考虑重复的数据

package text.text02;import java.util.ArrayList;/*
基本查找/顺序查找
核心:从0索引开始挨个往后查找需求:定义一个方法利用基本查找,数据如下:{13, 52, 1314, 10, 17, 52, 123, 147, 52, 81, 90, 103, 23, 52, 7, 79}要求1:查询某个元素是否存在
要求2:查询某个元素是否存在,如果存在,返回其索引,不考虑重复的数据
要求3:查询某个元素是否存在,如果存在,返回其索引,考虑重复的数据*/
public class text06A {public static void main(String[] args) {int[] arr = {13, 52, 1314, 10, 17, 52, 123, 147, 52, 81, 90, 103, 23, 52, 7, 79};//要求1:查询某个元素是否存在//定义两个要查询的数(一个能查到,一个查不到)int number1 = 10;int number2 = 50;//调用method1方法,判断要查找的数是否存在method1(arr, number1);   //10存在method1(arr, number2);   //50不存在System.out.println("==========================");//要求2:查询某个元素是否存在,如果存在,返回其索引,不考虑重复的数据//定义两个要查询的数(一个能查到,一个查不到)int number3 = 10;int number4 = 50;//调用method2方法和judge方法,并且将method2方法的返回值和要查询的数以参数的形式传过去judge(method2(arr, number3), number3);    //10 存在,其索引为:3judge(method2(arr, number4), number4);    //50不存在System.out.println("==========================");//要求3:查询某个元素是否存在,如果存在,返回其索引,考虑重复的数据//定义两个要查询的数(一个能查到,一个查不到)int number5 = 52;int number6 = 50;//调用method3方法,判断要查找的数是否存在,存在输出其所有的索引位置method3(arr, number5);     //52存在,其索引为:1 5 8 13method3(arr, number6);     //50不存在}//查询某个元素是否存在public static void method1(int[] arr, int number) {//定义一个布尔类型的变量用于记录是否存在boolean b = false;//利用循环判断要查找的数是否存在for (int i = 0; i < arr.length; i++) {if (arr[i] == number) {b = true;break;}}if (b) {System.out.println(number + "存在");} else {System.out.println(number + "不存在");}}//查询某个元素是否存在,如果存在,返回其索引,不考虑重复的数据public static int method2(int[] arr, int number) {//利用循环判断要查询的数是否存在for (int i = 0; i < arr.length; i++) {if (arr[i] == number) {//存在返回索引,并返回到调用处return i;}}//都不存在返回-1return -1;}//根据返回值判断数据是否存在public static void judge(int judgeNumber, int number) {if (judgeNumber == (-1)) {System.out.println(number + "不存在");} else {System.out.println(number + " 存在,其索引为:" + judgeNumber);}}//查询某个元素是否存在,如果存在,返回其索引,考虑重复的数据public static void method3(int[] arr, int number) {//定义一个集合用于存储要查询的数的索引ArrayList<Integer> list = new ArrayList<>();//利用循环判断要查到的数是否存在for (int i = 0; i < arr.length; i++) {if (arr[i] == number) {//如果存在,将该索引添加进集合list.add(i);}}//如果集合长度为0,表示不存在if (list.size() == 0) {System.out.println(number + "不存在");}//如果集合长度不为0,遍历集合,输出索引else {System.out.print(number + "存在,其索引为:");for (int i = 0; i < list.size(); i++) {int n = list.get(i);System.out.print(n + " ");}}//换行System.out.println();}
}

输出结果

要求1:查询某个元素是否存在

在这里插入图片描述

要求2:查询某个元素是否存在,如果存在,返回其索引,不考虑重复的数据

在这里插入图片描述

要求3:查询某个元素是否存在,如果存在,返回其索引,考虑重复的数据

在这里插入图片描述

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

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

相关文章

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源&#xff0c;也就是需要联网才能使用的yum源。默认情况下&#xff0c;系统会使用Base源 *Media源是光盘yum源&#xff0c;是本地yum源…

【Android12】Android Framework系列---Adb和PMS安装apk源码流程

Adb和PMS安装apk源码流程 adb install命令 通过adb install命令可以将apk安装到Android系统&#xff08;注意&#xff1a;特定类型的apk&#xff0c;比如persist类型是无法通过adb安装的&#xff09; 下述命令中adb解析install命令&#xff0c;并调用Android PackageManagerS…

Java实现大学计算机课程管理平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

【Android】app中阻塞的looper为什么可以响应touch事件

这里&#xff0c;我们考虑一个问题&#xff0c;Android中的应用是一个looper线程&#xff0c;没有任务时就阻塞着&#xff0c;其他线程通过handler调用等方式向主线程looper发送任务&#xff0c; 如果点击应用上的按钮&#xff0c;应用是怎么及时响应的呢&#xff0c; 是专门启…

Redis(01)——常用指令

基础指令 select 数字&#xff1a;切换到其他数据库flushdb&#xff1a;清空当前数据库flushall&#xff1a;清空所有数据库dbsize&#xff1a;查看数据库大小exists key1[key2 …]&#xff1a;判断当前的key是否存在keys *&#xff1a;查看所有的keyexpire key 时间&#xff…

终端(命令提示符或Windows PowerShell或Azure Cloud Shell)概述

终端&#xff08;命令提示符或Windows PowerShell或Azure Cloud Shell&#xff09;是一种很 不 好用的东西 就是要背&#xff0c;很 不 爽 介绍 Windows 终端是一个新式主机应用程序&#xff0c;它面向你喜爱的命令行 shell&#xff0c;如命令提示符、PowerShell 和 bash&…

《GitHub Copilot 操作指南》课程介绍

第1节&#xff1a;GitHub Copilot 概述 一、什么是 GitHub Copilot 什么是 GitHub Copilot GitHub Copilot是GitHub与OpenAI合作开发的编程助手工具&#xff0c;利用机器学习模型生成代码建议。它集成在开发者的集成开发环境&#xff08;IDE&#xff09;中&#xff0c;可以根…

新买电脑配置不低却卡顿?

目录 前言&#xff1a; 电脑卡顿的原因 Windows 10必做的系统优化 禁用 IP Helper 关闭系统通知 机械硬盘开启优化驱动器功能 开启存储感知 前言&#xff1a; 新买的电脑配置不低&#xff0c;但却卡顿甚至程序不反应&#xff0c;这是怎么回事儿&#xff1f; 其实并不…

使用人工智能助手 Github Copilot 进行编程 01

本章涵盖了 AI 助⼿如何改变新程序员的学习⽅式为什么编程永远不会再⼀样了AI 助⼿如 Copilot 的⼯作原理Copilot 如何解决⼊⻔级编程问题AI 辅助编程的潜在危险 在本章中&#xff0c;我们将讨论人类如何与计算机进行交流。我们将向您介绍您的 AI 助手 GitHub Copilot&#x…

Vue3组件库开发 之Button(2) 未完待续

Vue3组件库开发 之Button(1) 中新建项目&#xff0c;但未安装成功ESLINT 安装ESLINT npm install eslint vite-plugin-eslint --save-dev 安装eslint后&#xff0c;组件文件出现错误提示 添加第三方macros &#xff0c;虽然不是官网但很多开发者都是vue3开发人员 安装macros…

后面的输入框与前面的联动,输入框只能输入正数(不用正则)

概要 提示&#xff1a;这里可以描述概要 前面的输入框是发票金额&#xff0c;后面的输入框是累计发票金额&#xff08;含本次&#xff09;--含本次就代表后倾请求的接口的数据&#xff08;不是保存后返显的-因为保存后返显的是含本次&#xff09;是不含本次的所以在输入发票金…

php目录操作示例

目录 1.常用函数 2.列举当前目录列表 3.判断是否是文件夹 1.常用函数 函数名功能scandir 列出指定路径中的文件和目录 opendir 打开文件夹&#xff0c;返回操作资源 readdir读取文件夹资源closedir 关闭文件夹操作资源 is_dir 判断是否是文件夹 filetype 显示是文件夹还是文…

HarmonyOS应用开发者高级认证

一、判断题 云函数打包完成后&#xff0c;需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用&#xff08;错&#xff09; 在column和Row容器组件中&#xff0c;aligntems用于设置子组件在主轴方向上的对齐格式&#xff0c;justifycontent用于设置子组件在交叉轴…

4496 蓝桥杯 求函数零点 简单

4496 蓝桥杯 求函数零点 简单 //C风格解法1&#xff0c;通过率100% #include <bits/stdc.h> // int a, b; 一定会自动初始化为 0int main(){int a 2, b 3; // 定义a&#xff0c;b&#xff0c;不会自动初始化&#xff0c;最好自己定义时初始化// windows环境下a值固定&…

springboot配置项动态刷新

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…

Python中使用多种方法输出哈沙德数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 哈沙德数&#xff08;Harshad Number&#xff09;&#xff0c;又称Niven数&#xff0c;是指一个自然数&#xff0c;它可以被它的各位数字之和整除。换句话说&#xff0c;如果一个数字是哈沙德数&#xff0c;那么…

CSS 下载进度条

<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…

【JVM】JVM概述

JVM概述 基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;即 Java 虚拟机&#xff0c;一种规范&#xff0c;本身是一个虚拟计算机&#xff0c;直接和操作系统进行交互&#xff0c;与硬件不直接交互&#xff0c;而操作系统可以帮我们完成和硬件进行交互的工作特…

最优传输学习及问题总结

文章目录 参考内容lam0.1lam3lam10lam50lam100lam300画图线性规划matlabpython代码 欢迎关注我们组的微信公众号&#xff0c;更多好文章在等你呦&#xff01; 微信公众号名&#xff1a;碳硅数据 公众号二维码&#xff1a; 参考内容 https://blog.csdn.net/qq_41129489/artic…

使用ffmpeg调整视频中音频采样率及声道

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i example2.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable…