当前位置: 首页 > news >正文

数据结构和算法——查找算法

目录

线性查找法

二分查找法

插值查找法

斐波那契查找法


线性查找法

可以是有序的,也可以是无序的。

public class SeqSearch {public static void main(String[] args) {int[] arr = new int[]{1, 9, 11, -1, 34, 89};int res = seqSearch(arr, 34);}public static int seqSearch(int[] arr, int n) {for (int i = 0; i < arr.length; i++) {if (arr[i] == n) {return i;}}return -1;}
}

二分查找法

也叫折半查找,数组必须有序。

public class BinarySearch {public static void main(String[] args) {int[] arr = new int[]{2, 2, 4, 4, 5};
//        int res = binarySearch(arr, 6);List list = binarySearchPlus(arr, 6);}public static int binarySearch(int[] arr, int n) {int l = 0;int r = arr.length - 1;while (l <= r) {int m = (l + r) / 2;if (n < arr[m]) {r = m - 1;} else if (n > arr[m]) {l = m + 1;} else if (n == arr[m]) {return m;} else {return -1;}}return -1;}public static ArrayList binarySearchPlus(int[] arr, int n) {int l = 0;int r = arr.length - 1;while (l <= r) {int m = (l + r) / 2;if (n < arr[m]) {r = m - 1;} else if (n > arr[m]) {l = m + 1;} else if (n == arr[m]) {ArrayList<Integer> list = new ArrayList<>();list.add(m);for (int i = m - 1; i >= 0 && n == arr[i]; i++) {list.add(i);}for (int i = m + 1; i < arr.length && n == arr[i]; i++) {list.add(i);}Collections.sort(list);return list;} else {return null;}}return null;}
}

插值查找法

斐波那契查找法

http://www.lryc.cn/news/191295.html

相关文章:

  • Blender:对模型着色
  • 加密市场波动:地缘政治与美股走弱引发不确定性!
  • ElementUI编辑表格单元格与查看模式切换的应用
  • spring-创建Webservice服务
  • Maven系列第3篇:详解maven解决依赖问题
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-4
  • Stable Diffusion XL搭建
  • 面试题-React(十一):性能优化之PureComponent和memo
  • <图像处理> Fast角点检测
  • 基于centos、alpine制作Java JDK基础镜像
  • 【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023
  • hive 知识总结
  • golang/云原生/Docker/DevOps/K8S/持续 集成/分布式/etcd 教程
  • jeecg库login登录过程分析笔记
  • echarts仪表盘vue
  • 管道和重定向分号-连接符
  • WSL VScode连接文件后无法修改(修改报错)
  • 迷你Ceph集群搭建(超低配设备)
  • Python数据挖掘项目实战——自动售货机销售数据分析
  • TortoiseGit使用教程
  • 如何测量GNSS信号和高斯噪声功率及载波比?
  • 动态壁纸软件iWall mac中文特色
  • xtrabackup全备 增备
  • 【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?
  • Pymol做B因子图
  • EKF例程 matlab
  • 【C语言】atoi函数的模拟
  • JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)
  • Linux Centos安装Sql Server数据库,结合cpolar内网穿透实现公网访问
  • Vulnhub系列靶机---Raven: 2