首页 > 编程语言 >扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法

扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法

时间:2023-04-22 13:06:08浏览次数:44  
标签:02 LinearSearch03 target int search 003 算法 data public

1、算法描述

在数组中逐个查找元素,即遍历。

2、思路原理

如算法描述,基本是最简单的代码块了,没有什么额外的原理。

3、初步的代码实现

线性查找法初步的代码实现:

package com.mosesmin.datastructure.week01.chap02;

/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    public int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        LinearSearch03 ls = new LinearSearch03();
        int res = ls.search(data,10);
        System.out.println(res);

        int res2 = ls.search(data,666);
        System.out.println(res2);
    }
}

将search方法修改为静态方法(用static关键字修饰即可)

package com.mosesmin.datastructure.week01.chap02;

/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    public static int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        int res = LinearSearch03.search(data,10);
        System.out.println(res);

        int res2 = LinearSearch03.search(data,666);
        System.out.println(res2);
    }
}

为了阻止其他类、其他用户创建LinearSearch03类对象,可以将类LinearSearch03的构造方法声明为私有的。


即:

private LinearSearch03(){}

完整的类代码:

package com.mosesmin.datastructure.week01.chap02;
/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    private LinearSearch03(){}
    public static int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        int res = LinearSearch03.search(data,10);
        System.out.println(res);

        int res2 = LinearSearch03.search(data,666);
        System.out.println(res2);
    }
}

至此,这个类在设计层面已经没有大的问题了。

4、运行结果

输入:数组data、目标元素target
运行结果:

扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法_数组

输出:target在data中的索引
查找的第1个目标元素10,它在数组中的索引为3;
查找的第2个目标元素666,它不存在于数组中,所以返回-1。



标签:02,LinearSearch03,target,int,search,003,算法,data,public
From: https://blog.51cto.com/u_15708686/6215237

相关文章

  • 02:基础入门-数据包拓展
    1、网站解析对应简要网站搭建过程涉及到的攻击层面?(源码、搭建平台、系统、网络层等)涉及到的安全问题?(目录、敏感文件、弱口令、IP及域名等)2、HTTP/S数据包1.无代理request请求数据包response返回数据包2.有代理request请求数据包proxy代理服务器response返回数......
  • AGC002E Candy Piles
    尝试考虑\(n=1,n=2,n=3\)的必败必胜条件,寻找一些结论,但是发现即使是\(n=3\)胜负情况已经有些不可描述了,说明我们必须尝试转化问题的形式。注意到操作是全局减,常见的转化是差分,但是差分后的操作仍然没有优秀的性质。继续思考,可以得到一个恰当的转化:注意到游戏结束当且仅当最......
  • 文章学习:基于AVX-512指令集的同态加密算法中大整数运算性能优化与突破
    学习文章:英特尔×同态科技|基于AVX-512指令集的同态加密算法中大整数运算性能优化与突破文章人工智能的安全隐患ChatGPT的成功大部分来源于海量的数据支撑和丰富的数据维度,基于13亿参数量的庞大模型,随着用户的不断涌入,ChatGPT不断迭代进化新的“知识”,而在模型表达能力的增......
  • 热题100_20230421
    128、最长连续序列题目说明给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。解题思路1:排序此法不满足时间复杂度为O(n)先对数组进行排序,当遇到不连续的数时则重置当前的序列......
  • [P8766 [蓝桥杯 2021 国 AB] 异或三角]题解
    P8766[蓝桥杯2021国AB]异或三角题目描述分析题目中给出了三个限制首先我们不妨设\(a,b\ltc\),则而由于我们把\(c\)作为了最大值,原题需要有序对\((a,b,c)\)所以\(ans\ast3\)1.\(1\leqa,b,c\leqn\)2.\(a\oplusb\oplusc=0\)3.\(a+b\gtc\)而在枚举过程中,......
  • 物联网---02.Modbus协议
    一、简介Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以......
  • 放逐 | HBOI 2023 游寄
    本来是四月一日的事情,但是现在还是发在这里吧。高一。\(\sfHBOI2023\)上一次来hust还是上次省选呢。进考场了。???你tm距离开考20分钟才开电脑?我还tm要整vscode呢!我还要打缺省源呢!然后傻逼鼠标滚轮寄了,弄了半天,换到了考场最后面的位置。这意味着确认签字又要被排......
  • mysql学习笔记2023年3月10日
    navicat 用法 ①创建数据库  ②创建数据表 外键  ③新建查询  ④转储SQL文件(执行的就是mysqldump命令) ⑤执行SQL文件前,需要先创建数据库临时表 (select*fromtb1)asB;  临时表表名为B select sidfromB; ......
  • 02-目录---数据结构与算法
    第01章:数组(即顺序表)的基本实现数组头文件定义:链接初始化、清空、销毁数组:链接输入元素创建数组、打印数组:链接数组扩容:链接在数组尾部追加若干元素:链接插入元素x:链接按位置删除元素:链接删除元素x:链接定位元素x:链接第02章:数组其他算法实现合并数组:链接1:链接2:链接3:链......
  • 基于smo算法的数据分类matlab仿真,对比线性分类和非线性分类
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要         SVM通常用对偶问题来求解,这样的好处有两个:1、变量只有N个(N为训练集中的样本个数),原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。2、可以方便地引入......