java常见算法

这里写目录标题

  • 1.二分查询法
  • 2.冒泡排序算法
  • 3.快速查询算法

1.二分查询法

要求待查询的序列是有序数列, 每个取中间位置的值与目标值进行比较

  • 如果目标值 > 中间位置, 目标值在右部分, 起始索引更新为mid + 1
  • 如果目标值 = 中间位置, 则直接返回
  • 如果目标值 < 中间位置, 目标值在左部分, 结束索引更新为mid - 1
public static void main(String[] args) {// 正向排序数组int[] arr = new int[]{1, 3, 6, 9, 11, 21, 43, 55, 78};search(arr, 9);
}public static void search(int[] arr, int t) {// 起始索引int start = 0;// 结束索引int end = arr.length - 1;// 判断查询了几次int count = 1;while (start <= end) {  // 设置边界值// 找到中间索引int mid = (start + end) / 2;// 输出: 每次进行比较的中间值System.out.println(arr[mid]);if (arr[mid] == t) {System.out.println("找到目标值:" + t);System.out.println("查找次数" + count);return;} else if (arr[mid] < t){// 目标值在右部分, 起始索引更新为mid + 1start = mid + 1;} else if (arr[mid] > t) {// 目标值在左部分, 结束索引更新为mid - 1end = mid - 1;}// 进入下一次循环, 查找次数 + 1count ++;}System.out.println("无匹配值");
}

2.冒泡排序算法

通过重复比较相邻的元素并交换它们的位置,将未排序部分中的最大(或最小)元素逐渐“冒泡”到序列的一端,忽略序列中已经排好序的元素, 重复上面的过程, 直到整个序列有序

案例: 数组有9个元素, 我们想要其中的元素从小到大有序排列

外层循环: 0
内层循环: 0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7, 7:8 (0索引与1索引比较; 1索引与2索引比较)外层循环: 1
外层循环: 0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7外层循环: 2
外层循环: 0:1, 1:2, 2:3, 3:4, 4:5, 5:6......外层循环: 7
外层循环: 0:1
public static void main(String[] args) {int[] arr = new int[]{65, 12, 3, 9, 11, 51, 23, 45, 58};bubbleSort(arr);for (int a : arr) {System.out.println(a);}
}public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {System.out.println("外层遍历, 当前批次 =" + i);// 外层遍历for (int j = 0; j < arr.length - 1 - i; j++) {System.out.println("内存遍历, 当前批次 =" + j);/*** 内存遍历, 比较相邻的元素* 忽略队列中已经排行的元素, 重复整个过程*/if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}

3.快速查询算法

案例: 将数组的奇数放在前面,偶数放在后面

public static void main(String[] args) {int[] arr = new int[]{65, 12, 3, 9, 11, 51, 23, 45, 58};evenOdd(arr);for (int a : arr) {System.out.println(a);}
}public static int[] evenOdd(int[] arr){int  left = 0;int right = arr.length - 1;while(left < right){while(left < right && arr[left] % 2 != 0){// 左侧游标, 如果是奇数, 就向右移动游标(left++), 指向后一个对象, 直到那个偶数left++;}while(left < right && arr[right] % 2 == 0){// 右侧游标, 如果是偶数, 就向左移动游标(right--), 指向前一个对象, 直到找到奇数right--;}// 交换两个对象if(left < right){int temp = arr[left];arr[left] = arr[right];arr[right] = temp;}}return arr;
}

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

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

相关文章

全网最全爬取-b站爬取弹幕+评论之js逆向与xml降本增效

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;801 阅读时间: 10min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及…

【C语言深度解剖】(14):结构体内存对齐(详细配图讲解)

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏链接查看&…

只有题目和摘要,能匹配到适合发发表的期刊吗

美国时间5月20日更新的Journal List中&#xff0c;SCIE期刊数据库剔除(Dropped)或停止检索(Ceased)了这2本期刊&#xff01;我们整理了期刊的详细信息供大家参考&#xff01; 01《EUROPEAN REVIEW FOR MEDICAL AND PHARMACOLOGICAL SCIENCES》 ISSN&#xff1a;1128-3602 出…

椋鸟C++笔记#3:类的默认成员函数

文章目录 类的默认成员函数构造函数&#xff08;Constructor&#xff09;构造函数的特点 析构函数 &#xff08;Destructor&#xff09;析构函数的特点 拷贝构造函数&#xff08;Copy Constructor&#xff09;拷贝构造函数的特点 运算符重载&#xff08;Operator Overloading&a…

Java中关于infinity的解释

在Java中&#xff0c;Infinity 不是一个直接的关键字或常量&#xff0c;但它是浮点数&#xff08;float 和 double&#xff09;可以表示的一个特殊值。具体来说&#xff0c;Infinity 通常与两个特殊的浮点值相关联&#xff1a;正无穷大 (POSITIVE_INFINITY) 和负无穷大 (NEGATI…

Java编程注释教程

在Java SE&#xff08;Standard Edition&#xff09;中&#xff0c;注释是用于解释说明程序的文字&#xff0c;它们不会影响程序的执行&#xff0c;但可以提高程序的可读性和可维护性。Java SE支持三种类型的注释&#xff1a; 单行注释&#xff1a; 使用两个斜杠&#xff08;/…

缩进在编程中的重要性及正确使用方法

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 前言 缩进不当引发的问题 缩进的正确使用方法 缩进错误的调试与修复 总结 前言 在编程世…

Unity 资源 之 限时免费的Lowpoly农场动物,等你来领!

Unity资源 之 Lowpoly farm animals 农村动物 前言资源包内容领取兑换码 前言 Unity 资源商店为大家带来了一份特别的惊喜——限时免费的农场动物资源&#xff01;这是一个充满趣味和实用性的资源包。 资源包内容 在这个资源包中&#xff0c;你可以找到丰富多样的低地养殖动物…

Vue3路由配置

路由其实就是一组对应关系&#xff0c;将一个路径与一个组件对应起来&#xff0c;当路径发生变化&#xff0c;路由器就可以通过路由规则&#xff0c;找到当前路径对应的组件&#xff0c;并将该组件呈现到页面上 使用路由步骤&#xff1a; 1.终端输入 npm i vue-router 2.在App…

UDP网络聊天室

前言 基于UDP的网络聊天室 一、项目需求 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 二、步骤 1.创建UD…

Softing工业将亮相2024年阿赫玛展会——提供过程自动化的连接解决方案

您可于2024年6月10日至14日前往美因河畔法兰克福11.0号馆&#xff0c;Softing将在C25展位展出&#xff0c;欢迎莅临&#xff01; 作为工业应用中数据交换领域公认的专家&#xff0c;Softing工业致力于帮助各行各业的客户部署网络自动化和优化生产流程。 使用Softing产品&…

mybatis plus 配置多数据源(数据源进行切换)

多数据源(数据源进行切换) AbstractRoutingDataSource 根据用户定义的规则选择当前的数据源&#xff0c;这样我们可以在执行查询之前&#xff0c;设置使用的数据源。实现可动态路由的数据源&#xff0c;在每次数据库查询操作前执行。它的抽象方法 determineCurrentLookupKey()…

如何在OpenHarmony上使用SeetaFace2人脸识别库?

简介 相信大部分同学们都已了解或接触过OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;了&#xff0c;但你一定没在OpenHarmony上实现过人脸识别功能&#xff0c;跟着本文带你快速在OpenHarmony标准设备上基于SeetaFace2和OpenCV实现人脸识别。 项目效…

【Vue】Vue2路由

目录 路由作用Vue Router路由Vue Router路由的组成VueRouter常用的函数Vue Router的使用安装Vue Router创建router引入router使用 备注 Vue多级路由&#xff08;嵌套路由&#xff09;编写组件配置嵌套路由 Vue中的动态路由代码示例父组件Home.vue子组件路由配置 路由的 query 参…

黑龙江等保测评深入理解

“没有网络安全&#xff0c;就没有国家安全”&#xff0c;等级保护测评是指按照网络安全系统制定的一系列的防护过程&#xff0c;对已经有的和即将上线的商业服务的基础设施&#xff08;系统&#xff0c;数据库&#xff0c;中间件等&#xff09;所做的一系列的检查&#xff0c;…

HeyGen AI是什么?怎样使用HeyGen AI?

在数字时代&#xff0c;视频内容为王。无论是在社交媒体还是网站上&#xff0c;视频都以其独特的方式吸引着人们的眼球。然而&#xff0c;制作出专业水准的视频往往需要大量的时间和技术知识。HeyGen AI正是为了解决这一难题而诞生的。 HeyGen AI简介 HeyGen AI是一个创新的视…

618值得买的好物清单,这些数码好物你千万不能错过!

​随着618购物节的距离越来越近&#xff0c;你是不是已经开始疯狂浏览购物app&#xff0c;准备大肆采购一番了&#xff1f;但是在购物之前&#xff0c;还是得先做一做功课&#xff0c;避免陷入购物陷阱&#xff0c;而作为一名经验丰富的数码爱好者&#xff0c;想通过这次机会给…

Thinkphp内核开发盲盒商城源码v2.0 对接易支付/阿里云短信/七牛云存储

源码简介 这套系统是我从以前客户手里拿到的,100完整可用,今天测试防红链接失效了,需要修改防红API即可!前端页面展示我就不放了,懂的都懂 优点是Thinkphp开发的&#xff0c;二开容易。 源码图片 资源获取&#xff1a;Thinkphp内核开发盲盒商城源码v2.0 对接易支付/阿里云短…

kafka监控配置和告警配置——筑梦之路

kafka_exporter项目地址&#xff1a;https://github.com/danielqsj/kafka_exporter docker-compose部署kafka_exporter # docker-compose部署多个kafka_exporter&#xff0c;每个exporter对接一个kafka# cat docker-compose.ymlversion: 3.1 services:kafka-exporter-opslogs…