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

学习JAVA的第十二天(基础)

目录

算法

查找算法

基本查找(顺序查找)

二分查找(折半查找)

分块查找

 排序算法

冒泡排序

选择排序

插入排序

快速排序

递归算法 


 

算法

                        算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。


查找算法

基本查找(顺序查找)

关键:

                        0索引开始依次向后查找

方法:

 public static boolean basicSearch(int[] arr,int number) {//基本查找  遍历数组查找所需结果for (int i = 0; i < arr.length; i++) {if(number == arr[i]){return true;}}return false;}}

二分查找(折半查找)

关键:

                        数组中的数据是有序的

                        每次排除一半的查找范围,节省查找次数

方法:

    public static int BinarySearch(int[] arr,int number)  {//定义变量确定查找范围 最小肯定是0索引的int min = 0;//最大的索引是数组长度-1int max = arr.length-1;//开始循环查找数据,利用while循环,查找出索引直接返回结果while(true){if(min > max){//返回-1,调用时可以将-1与0作比较,得出数据索引是否存在return -1;}//中间位置int mid = (min + max) / 2;//arr[mid]>numberif(arr[mid]>number){max = mid - 1;}//arr[mid]<numberelse if(arr[mid]<number){min = mid + 1;}else{return mid;}}}

分块查找

关键:

                                块内无序,块间有序

                                一般分块是按照数组长度的开根号

                                具体问题,具体分析 

方法:

//判断number在哪个块中private static int findIndexBlock(Block[] bArr,int number){//循环判断number在哪个块中for (int i = 0; i < bArr.length; i++) {if(number <= bArr[i].getMax()){return i;}}return -1;}
    //利用分块查找获取索引private static int getIndex(Block[] bArr,int[] arr,int number){int indexBlock = findIndexBlock(bArr,number);//数据不在数组中if(indexBlock == -1){return -1;}//数据在数组中  刚才获取了数据所属块的索引int startIndex = bArr[indexBlock].getStartIndex();int endIndex = bArr[indexBlock].getEndIndex();//遍历for (int i = startIndex; i <= endIndex; i++) {if(arr[i] == number){return i;}}return -1;}

 排序算法

冒泡排序

关键:

                                将相邻的数据进行比较,小的放前面,大的放后面。

方法:

      for(int i = 0; i < arr.length - 1; i++){for (int j = 0; j < arr.length - 1-i; j++) {if (arr[j] > arr[j + 1]) {int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}

选择排序

关键 :

                           从0索引开始,用每个索引的元素与后面依次比较,小的放前面,大的放后面。

方法:

        //循环次数for(int i = 0; i < arr.length-1;i++){//从哪个索引开始比较for (int j = 1+i; j < arr.length; j++) {if (arr[i] > arr[j]) {int tmp = arr[i];arr[i] = arr[j ];arr[j ] = tmp;}}}

插入排序

关键:

                         将0索引到n索引看成有序的,n+1到最大索引是无序的。遍历无序数据,将其插入有序数据的合适位置

方法:

//确定无序数据的开始索引,依次插入有序数据中for (int i = startIndex; i < arr.length; i++) {int j = i;//相当于依次向左比较,直至到0索引为止while(j > 0 && arr[j] < arr[j-1]){int tmp = arr[j];arr[j] = arr[j-1];arr[j-1] = tmp;j--;}}

快速排序

关键:

                        将0索引的数据作为基准数,左边都是比基准数小的,右边都是比基准数大的

方法:

 public static void QuickSort(int[] arr, int startIndex, int endIndex) {//定义两个查找的范围 start~endint start = startIndex;int end = endIndex;//递归的出口if(end < start){return;}//0索引为基准数int baseNumber = arr[startIndex];while(end != start){while (true) {if (start >= end || arr[end] < baseNumber) {break;}end--;}while (true) {if (start >= end || arr[start] > baseNumber) {break;}start++;}int tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;}int tmp = arr[start];arr[start] = arr[startIndex];arr[startIndex] = tmp;//递归条件QuickSort(arr,startIndex,start-1);QuickSort(arr,start+1,endIndex);}

递归算法 

                方法中调用方法本身的现象

关键:

                递归算法一定要有出口,否则内存会溢出

                以大化小解决问题

方法:

   //简单的累加递归public static int Recursion(int number) {if(number == 1){return 1;}return number+Recursion(number-1);}

         

    //简单的求阶乘的递归public static int getNumber(int number) {if(number == 1){return 1;}return number * getNumber(number-1);}

                               

相关文章:

学习JAVA的第十二天(基础)

目录 算法 查找算法 基本查找&#xff08;顺序查找&#xff09; 二分查找&#xff08;折半查找&#xff09; 分块查找 排序算法 冒泡排序 选择排序 插入排序 快速排序 递归算法 算法 算法&#xff08;Algorithm&#xff09;是指解题方案的准确而完整的描述&#xff…...

Vector集合源码分析

Vector集合源码分析 文章目录 Vector集合源码分析一、字段分析二、方法分析三、总结 内容如有错误或者其他需要注意的知识点&#xff0c;欢迎指正或者探讨补充&#xff0c;共同进步。 一、字段分析 //用于存储该集合中的所有数据对象&#xff0c;所以是基于数组实现的 protec…...

Unity引擎中光源都有哪几种,都有什么作用

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com Unity 引擎为了实现游戏场景的明暗和光影效果&#xff0c;提供了四种类型的光源&#xff0c;分别是方向光&#xff08;Directional Lights&#xff09;、点光源&#xff08;Point Lights&#xff09;、聚光灯…...

C语言中结构体成员访问操作符的含义及其用法

1.直接访问操作符 用法&#xff1a;结构体名.成员名。 含义&#xff1a;直接访问结构体中的成员变量。 示例&#xff1a; #include<stdio.h> struct student {char name[20];int age; }; int main() {//定义了一个结构体数组arrstruct student arr[4] { {"cxk&q…...

Kubeadmin方式部署Calico网络模式的K8s集群

目录 1.环境准备 2.配置内核参数 3.配置ntp时间服务器 4.配置持久化日志目录 5.升级物理机内核 6.配置ipvs服务 7.安装docker 8.安装kubeadm、kubectl、kubelet 9.导入k8s组件基础镜像 10.k8s初始化配置 11.配置calico网络 12.完成部署 1.环境准备 ###方案中涉及的…...

sparse transformer 常见稀疏注意力

参考&#xff1a; https://zhuanlan.zhihu.com/p/259591644 主要就是降低transformer自注意力模块的复杂度 复杂度主要就是 Q K^T影响的&#xff0c;稀疏注意力就是在Q点乘K的转置这模块做文章 下列式一些sparse transformer稀疏注意力方法 a、transformer原始的 &#xff0…...

力扣 第 125 场双周赛 解题报告 | 珂学家 | 树形DP + 组合数学

前言 整体评价 T4感觉有简单的方法&#xff0c;无奈树形DP一条路上走到黑了&#xff0c;这场还是有难度的。 T1. 超过阈值的最少操作数 I 思路: 模拟 class Solution {public int minOperations(int[] nums, int k) {return (int)Arrays.stream(nums).filter(x -> x <…...

基于springboot+vue的人格障碍诊断系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

Go-知识struct

Go-知识struct 1. struct 的定义1.1 定义字段1.2 定义方法 2. struct的复用3. 方法受体4. 字段标签4.1 Tag是Struct的一部分4.2 Tag 的约定4.3 Tag 的获取 githupio地址&#xff1a;https://a18792721831.github.io/ 1. struct 的定义 Go 语言的struct与Java中的class类似&am…...

SpringMVC 学习(十一)之数据校验

目录 1 数据校验介绍 2 普通校验 3 分组校验 4 参考文档 1 数据校验介绍 在实际的项目中&#xff0c;一般会有两种校验数据的方式&#xff1a;客户端校验和服务端校验 客户端校验&#xff1a;这种校验一般是在前端页面使用 JS 代码进行校验&#xff0c;主要是验证输入数据…...

软考55-上午题-【数据库】-数据库设计步骤1

一、数据库设计的步骤 新奥尔良法&#xff0c;四个主要阶段&#xff1a; 1、用户需求分析&#xff1a;手机用户需求&#xff0c;确定系统边界&#xff1b; 2、概念设计&#xff08;概念结构设计&#xff09;&#xff1a;是抽象概念模型&#xff0c;较理想的是采用E-R方法。 …...

速盾:使用cdn后速度慢是怎么回事?

CDN&#xff08;内容分发网络&#xff09;是一种通过将网站的静态内容分布到全球各地的服务器&#xff0c;从而提供更快速度和更好用户体验的技术。然而&#xff0c;有时候用户会遇到使用CDN后速度变慢的问题&#xff0c;下面将探讨几种可能的原因。 服务器选择错误: CDN服务通…...

考研复试类比社团招新,无所谓“公平”,导师选谁都是他的权力

这篇文章是抖音和b站上上传的同名视频的原文稿件&#xff0c;感兴趣的csdn用户可以关注我的抖音和b站账号&#xff08;GeekPower极客力量&#xff09;。同时这篇文章也为视频观众提供方便&#xff0c;可以更加冷静地分析和思考。文章同时在知乎发表。 我考研一战的时候计算机考…...

阿里面试,有点焦虑。。

恭喜发现宝藏&#xff01;搜索公众号【TechGuide】回复公司名&#xff0c;解锁更多新鲜好文和互联网大厂的笔经面经&#xff0c;目前已更新至美团、字节… 作者TechGuide【全网同名】 聊聊春招 春招来了&#xff0c;有些24届校招生可能还在做最后的努力&#xff0c;有些25届的…...

24计算机考研调剂 | 石家庄铁道大学

01石家庄铁道大学 智慧交通研究室招少量调剂学术型硕士&#xff08;数一英一320分以上工科专业&#xff09; 考研调剂招生信息 学校:石家庄铁道大学 专业:工学->计算机科学与技术->计算机应用技术 工学->测绘科学与技术->地图制图学与地理信息工程 工学->交…...

勇敢尝鲜之Springboot3大坑-集成Mybatisplus报错:ddlApplicationRunner

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…...

linux高级编程:线程(二)、进程间的通信方式

线程&#xff1a; 回顾线程&#xff08;一&#xff09;&#xff1a; 1.线程间通信问题 线程间共享同一个资源&#xff08;临界资源&#xff09; 互斥&#xff1a; 排他性访问 linux系统 -- 提供了Posix标准的函数库 -- 互斥量&#xff08;互斥锁&#xff09; 原子操作&#x…...

Unity 佳能SDK 及数据获取

1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你 佳能(中国)- 佳定制(佳能影像产品),SDK,EDSDK,CCAPI,软件开发包下载 2. 将SDK这两个文件放到 Unity Plugins文件夹 3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中...

Unity(第二十三部)导航

你可以使用 unity官方提供的 unity导航组件或第三方 unity导航组件&#xff0c;以实现游戏中角色或其他物体的导航。 unity导航组件通常具有多种导航模式&#xff0c;如飞行模式、步行模式、车辆模式等&#xff0c;可以根据不同的需求选择合适的模式。同时&#xff0c;unity导…...

根据建表sql语句生成go的struct代码工具

sql2struct 一个根据"CREATE TABLE"建表语句生成对应的Go语言结构体的工具&#xff0c;暂只支持 MySQL 表。 开发目的 在 github 中找到一些 sql2struct&#xff0c;但要么是 chrome 插件&#xff0c;要么是在线工具&#xff0c;要么是需要连接 MySQL&#xff0c;…...

Competitive Companion全链路解决方案:编程竞赛效率提升指南

Competitive Companion全链路解决方案&#xff1a;编程竞赛效率提升指南 【免费下载链接】competitive-companion Browser extension which parses competitive programming problems 项目地址: https://gitcode.com/gh_mirrors/co/competitive-companion 一、工具定位与…...

Cadence Sigrity 模块深度解析:从电源完整性到信号优化的全流程应用

1. Cadence Sigrity工具套件概览 在高速PCB设计领域&#xff0c;电源完整性和信号完整性分析已经成为确保电子设备可靠性的关键环节。Cadence Sigrity作为业界领先的EDA工具套件&#xff0c;提供了从直流分析到高频仿真的完整解决方案。我第一次接触这套工具是在2013年设计一块…...

2026春招留学生必看:AI热潮下如何逆袭上岸大厂?高薪岗位申请指南

最近后台被问爆了——“安妮&#xff0c;今年春招到底什么情况&#xff1f;”“留学生回国还有优势吗&#xff1f;”“AI这么火&#xff0c;我们怎么上车&#xff1f;” 我花了三天时间&#xff0c;把字节、腾讯、百度、蚂蚁、美团这波春招的底裤都扒了一遍&#xff0c;结合和2…...

Intv_AI_MK11与Claude协同实战:构建多模型AI应用开发平台

Intv_AI_MK11与Claude协同实战&#xff1a;构建多模型AI应用开发平台 1. 混合AI模型的应用价值 在AI应用开发领域&#xff0c;单一模型往往难以满足复杂业务需求。就像一支足球队需要不同位置的球员配合一样&#xff0c;将Intv_AI_MK11与Claude等模型协同部署&#xff0c;能够…...

Qwen3-ASR-1.7B应用案例:在线面试平台→实时语音转文字+回答时长分析

Qwen3-ASR-1.7B应用案例&#xff1a;在线面试平台→实时语音转文字回答时长分析 想象一下&#xff0c;你是一家快速发展的科技公司HR&#xff0c;每天要面试几十位候选人。面试官一边提问&#xff0c;一边手忙脚乱地记录&#xff0c;生怕漏掉关键信息。面试结束后&#xff0c;…...

丹青幻境效果展示:同一人物在唐宋元明清五代服饰与背景下的风格迁移图

丹青幻境效果展示&#xff1a;同一人物在唐宋元明清五代服饰与背景下的风格迁移图 1. 项目介绍与核心价值 丹青幻境是一款基于先进图像生成技术的数字艺术创作工具&#xff0c;它巧妙地将现代人工智能技术与传统美学相结合&#xff0c;为用户提供了一个沉浸式的艺术创作体验。…...

Jetson Nano 平台YOLO目标检测优化详细设计方案

Jetson Nano 平台YOLO目标检测优化详细设计方案 1. 项目概况与设计目标 Jetson Nano 作为 NVIDIA 推出的入门级边缘 AI 计算平台&#xff0c;虽然在计算能力上相比高端 GPU有所限制&#xff0c;但在功耗控制和成本效益方面表现优异&#xff0c;特别适合对功耗敏感的边缘部署场景…...

智慧农业草莓成熟度识别 基于cnn的YOLOv11深度学习 智慧农业草莓成熟度目标检测系统 草莓识别系统(数据集使用 YOLOv11 进行草莓成熟度计数与检测 注意:此模块是在以下资源的+模型+界面)

使用 YOLOv11 进行草莓成熟度计数与检测 注意&#xff1a;此模块是在以下资源的帮助下完成的&#xff1a;Detection_image.png1. 代码库中每个 Notebook 的说明Dataset split NB: 此 Notebook 用于将原始的 3000 张图片按 0.8、0.1 和 0.1 的比例分为训练集、验证集和测试集。N…...

HappyHorse-1.0空降榜首碾压Seedance 2.0:60分断层领先,开源可商用,音视频联合生成新王诞生!

文章目录引言第1章&#xff1a;榜单屠榜&#xff0c;数据说话1.1 Artificial Analysis 榜单成绩1.2 为什么60分的差距如此恐怖&#xff1f;1.3 唯一短板&#xff1a;音频赛道第2章&#xff1a;技术亮点详解2.1 核心参数&#xff1a;150亿参数的庞然大物2.2 音视频联合生成&…...

如何用IBAnimatable与Swift Concurrency打造流畅异步动画:完整指南

如何用IBAnimatable与Swift Concurrency打造流畅异步动画&#xff1a;完整指南 【免费下载链接】IBAnimatable Design and prototype customized UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable. …...