当前位置: 首页 > 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;…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

[C++错误经验]case语句跳过变量初始化

标题&#xff1a;[C错误经验]case语句跳过变量初始化 水墨不写bug 文章目录 一、错误信息复现二、错误分析三、解决方法 一、错误信息复现 write.cc:80:14: error: jump to case label80 | case 2:| ^ write.cc:76:20: note: crosses initialization…...

EC2安装WebRTC sdk-c环境、构建、编译

1、登录新的ec2实例&#xff0c;证书可以跟之前的实例用一个&#xff1a; ssh -v -i ~/Documents/cert/qa.pem ec2-user70.xxx.165.xxx 2、按照sdk-c demo中readme的描述开始安装环境&#xff1a; https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c 2…...

Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南

Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南 在金融行业安全审计中&#xff0c;未启用HTTPS的Web应用被列为高危漏洞。通过正确配置HTTPS&#xff0c;可将中间人攻击风险降低98%——本文将全面解析Spring Boot中HTTPS的实现方案与实战避坑指南。 一、HTTPS 核心原理与…...

如何在Spring Boot中使用注解动态切换实现

还在用冗长的if-else或switch语句管理多个服务实现? 相信不少Spring Boot开发者都遇到过这样的场景:需要根据不同条件动态选择不同的服务实现。 如果告诉你可以完全摆脱条件判断,让Spring自动选择合适的实现——只需要一个注解,你是否感兴趣? 本文将详细介绍这种优雅的…...