常见算法(2)

1.冒泡排序

定义:相邻的数据两两比较,小的放前面,大的放后面。

public class test {public static void main(String [] arg)   {int [] arr= {2,4,5,3,6,1};//冒泡排序,排序次数arr.length-1for(int i=0;i<arr.length-1;i++) {for(int j=0;j<arr.length-1;j++) {//相邻元素两两交换if(arr[j]>arr[j+1]) {int tem=arr[j];arr[j]=arr[j+1];arr[j+1]=tem;}}}//打印for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}}
}

2.选择排序

定义:从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较,小的放前面,大的放后面。

public class test {public static void main(String [] arg)   {int [] arr= {2,4,5,3,6,1};//选择排序,排序次数arr.length-1for(int i=0;i<arr.length-1;i++) {//外循环,比较次数for(int j=i+1;j<arr.length;j++) {//内循环,每一轮要干的事情if(arr[i]>arr[j]) {int tem=arr[i];arr[i]=arr[j];arr[j]=tem;}}}//打印for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}}
}

3.插入排序

定义:将0索引的元素到N索引的元素看作是有序的,把N+1索引的元素到最后一个当成无序的,遍历无序的数据,将遍历到的元素插入到有序序列中适当位置,如遇相同数据,插在后面。

分析:先找无序开始的下标,利用for循环遍历无序数组,利用while循环交换数据。

public class test {public static void main(String [] arg)   {//插入排序int []arr= {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};//先寻找无序是从哪一个下标开始的int index=-1;for(int i=0;i<arr.length;i++) {if(arr[i]>arr[i+1]) {index=i+1;//无序开始的下标break;}}//对无序数组进行遍历,排序for(int i=index;i<arr.length;i++) {int j=i;//定义一个新变量,将i赋给while(j>0&&arr[j]<arr[j-1]) {int tem=arr[j];arr[j]=arr[j-1];arr[j-1]=tem;j--;}}for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}}
}

递归算法

定义:方法中调用方法本身的现象。

小练习:用递归算法求1~100的和。

分析:1~100的和可以拆成100+(1~99)的和

           1~99的和可以拆成99+(1~98)的和

            1~98的和可以拆成98+(1~97)的和.....等等

public class test {public static void main(String [] arg)   {//1~100的和System.out.println(getsum(100));}public static int getsum(int number) {if(number==1) {return 1;}return number+getsum(number-1);}
}

4.快速排序

第一轮:把0索引数字作为基准数,确定基准数在数组中的正确位置。比基准数小的全部在左边,比基准数大的全部在右边。

方法:定义两个变量:start,end;利用while循环先遍历end再遍历start,找到比基准数小、比基准数大停止,然后交换start和end位置,并循环。直至两个处于同一位置,该位置将基准数存入。再将此基准数的左右两边,再次调用此方法。

public class test {public static void main(String [] arg)   {//快速排序int[] arr= {6,1,2,7,9,3,4,5,10,8 };quick(arr,0,arr.length-1);for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}}public static void quick(int [] arr,int i,int j) {//数组,i为起始,j为结束//定义查找范围int start=i;int end=j;if(start>end) {//递归出口return;}//记录基准数int basenumber=arr[i];//利用循环交换数据while(start!=end) {//判断end什么时候停止while(true) {if(end<=start||arr[end]<basenumber) {break;}end--;}//startwhile(true) {if(end<=start||arr[start]>basenumber) {break;}start++;}//交换start和endint tem=arr[start];arr[start]=arr[end];arr[end]=tem;}//交换基准数和start或end的位置int tem=arr[i];arr[i]=arr[end];arr[end]=tem;//再对左边和右边进行调用quick(arr,i,start-1);quick(arr,start+1,j);}
}

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

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

相关文章

二叉树(详解)

在了解二叉树之前呢我们先来了解一下树形结构&#xff0c;因为二叉树就是树形结构的一种特殊情况&#xff0c;它有这非常好的性质&#xff0c;是很常用的一种结构。 目录 一.什么是树形结构&#xff1f; 二.树形结构常见的名词 三.树的存储 四.二叉树 1.二叉树的概念 2.…

私有云和多云管理平台 | Cloudpods v3.10.15 正式发布

功能优化 【主机】裸金属详情页增加部分属性信息【监控】优化告警策略&#xff0c;支持同时设置多监控指标【主机】支持透传设备自动探测【主机】LVM 块存储支持快照【监控】简化 Telegraf 容器的挂载点【主机】新建 VMware 支持同时填写备注信息【存储】KVM 支持对接 LVM 存储…

ubuntu2404 AMD64 编译并安装virtualbox7.0.18

ubuntu2404 AMD64 编译并安装virtualbox7.0.18 0、官方参考文档&#xff1a; https://www.virtualbox.org/wiki/Linux%20build%20instructions 1、下载源码&#xff1a; $ wget https://download.virtualbox.org/virtualbox/7.0.18/VirtualBox-7.0.18.tar.bz2 2、安装库&…

2024最新彩虹聚合DNS管理系统源码v1.3 全开源

2024最新彩虹聚合DNS管理系统源码v1.3 全开源 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析&#xff0c;目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、DNSLA、CloudFlare。 本系统支持多用户&#xff0c;每个用户可分配不同的域名解…

深入探索Kafka:了解其不可或缺的核心组件

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《数据流专家&#xff1a;Kafka探索》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kafka简介 2、Kafka的应用场景 3、Kafka与其他消…

【LeetCode刷题】有效三角形个数、查找总价值为目标值的两个商品

【LeetCode刷题】Day 5 题目1&#xff1a;611.有效三角形个数思路分析&#xff1a;思路1&#xff1a;暴力枚举O(N^3^)思路2&#xff1a;单调性&#xff0c;双指针解法O(NlogNN^2^) 题目2&#xff1a;LCR 179.查找总价格为目标值的两个商品思路1&#xff1a;暴力枚举O(N^2^)思路…

网络协议——Modbus-RTU

目录 1、简介 2、消息格式 3、Modbus寄存器种类说明 4、功能码01H 5、功能码02H 6、功能码03H 7、功能码04H 8、功能码05H 9、功能码06H 10、功能码0FH 11、功能码10H 1、简介 Modbus-RTU&#xff08;Remote Terminal Unit&#xff09;是一种串行通信协议&#xff0…

SpringMVC源码解读[1] -Spring MVC 环境搭建

源码地址: https://github.com/chen-jiacheng/springmvc-quickstart 一、使用 IDEA 创建 Spring MVC 项目 直接创建项目即可 默认项目结构: springmvc-quickstart ├── pom.xml └── src├── main│ ├── java│ │ └── com│ │ └── chenjiache…

Stable Diffusion简单食用方法

1.下载 1.1打开B站 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili哔哩哔哩&#xff08;bilibili.com)是国内知名的视频弹幕网站&#xff0c;这里有及时的动漫新番&#xff0c;活跃的ACG氛围&#xff0c;有创意的Up主。大家可以在这里找到许多欢乐。https://www.bilibili.com/ 1.2搜索…

521源码-免费教程-Linux系统硬盘扩容教程

本教程来自521源码&#xff1a;更多网站源码下载学习教程&#xff0c;请点击&#x1f449;-521源码-&#x1f448;获取最新资源 首先&#xff1a;扩容分区表 SSH登陆服务器输入命令&#xff1a;df -TH&#xff0c;获得数据盘相关信息 可以看到演示服务器的数据盘分区是&…

css扇形菜单动画效果

菜单组件 IntelligentAnalysis.vue 中间圆形区域可以换个图片 <template><div class"intel-analysis"><div class"info" :class"{ close-animation: !showMenu }"><div class"middle"></div><div cl…

【工具使用】搜狗输入法如何输入希腊字母等特殊字符

步骤&#xff1a; 1&#xff0c;点击悬浮框的输入方式&#xff0c;选择“符号大全”&#xff1a; 2&#xff0c;根据自己需要选择对应的符号即可&#xff1a;

Power BI实现动态度量值

假设有一张销售数据表Sale: 报表上有一个切片器(Slicer)(下拉框样式)&#xff0c; 当选择"第一"时&#xff0c;计算列[FirstSale]与列[Target]的百分比&#xff0c; 选择"第二"时&#xff0c;计算列[SecondSale]与列[Target]的百分比 选择"第三&qu…

3d数字化虚拟交互展厅让您紧跟时代的步伐

虚实融合打破边界&#xff0c;北京VR虚拟数字展厅搭建让体验者彷如置身于一部三维电影中&#xff0c;可以对场景中的物体、角色、模型进行自由参观和体验&#xff0c;并且系统支持随时更新&#xff0c;让您紧跟时代的步伐&#xff0c;领略更新的展览风采。 除了常见的科普培训&…

docker- 购建服务镜像并启动

文章目录 前言docker- 购建服务镜像并启动1. 前期准备2. 构建镜像3. 运行容器4. 验证 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实…

软考中级嵌入式系统设计师知识点

主要介绍一些软考中级嵌入式系统设计师涉及到的一些考点。 文章目录 前言 一、嵌入式系统设计师 二、知识点 总结 前言 主要介绍一些软考中级嵌入式系统设计师涉及到的一些考点。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、嵌入式系统设计师 …

宝塔面包安装搭建Flarum开源论坛程序 文档教程

一、服务器环境说明 宝塔 7.0.3 或更新版本 Linux Server&#xff08;本文用的是 CentOs 7.4.6 64位&#xff09; Apache 或者 Nginx&#xff08;本文用的是 Nginx 1.16.0&#xff09; MySQL 5.6&#xff08;本文使用 MySQL 5.7&#xff0c;原因请看下方引用&#xff09; PHP 7…

项目集成SkyWalking,基于k8s搭建

一、搭建SkyWalking 官方文档&#xff08;英文&#xff09;&#xff1a;skywalking/docs at master apache/skywalking 中文可以使用&#xff1a;GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache…

解决脚本刷服务器导致卡顿宕机的问题

在互联网服务领域&#xff0c;自动化脚本的不当使用或恶意攻击可能会导致服务器资源被过度消耗&#xff0c;从而引发服务响应缓慢甚至系统崩溃。特别是在电商、游戏、社交平台等领域&#xff0c;这种现象尤为常见。本文将深入探讨脚本刷服的常见形式、其对服务器性能的影响&…

计算机专业实习生应该去哪实习?

计算机专业实习生可以选择在各种不同类型的公司和组织中实习。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 这取…