常见算法(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.…

动态规划--0-1背包问题

动态规划 动态规划--0-1背包问题穷举法&#xff08;把所有情况列出来&#xff0c;比较得到总价值最大的情况&#xff09;动态规划算法01背包问题递归实现&#xff08;不带备忘录的自顶向下法&#xff09;01背包问题-递归实现&#xff08;带备忘的自顶向下法&#xff09;01背包问…

若依表格默认勾选某列复选框方法

条件成立禁用checkbox返回(disabled : true)即可。 {checkbox: true,formatter: function (value, row, index) {if($.common.equals("ry", row.loginName)){return { checked : true}} else {return { checked : false}}} } 注意事项:如果默认勾选,并且配置了 r…

私有云和多云管理平台 | 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、安装库&…

【MySQL精通之路】SQL优化(1)-查询优化(13)-条件过滤

在联接处理中&#xff0c;前缀行是从联接查询中的一个表传递到下一个表的那些行。 通常&#xff0c;优化器会尝试在联接查询的早期放置前缀计数较低的表&#xff0c;以防止行组合的数量快速增加。 在某种程度上&#xff0c;优化器可以使用从一个表中选择并传递到下一个表的行…

连接池笔记\JDBC的API\ACID属性\数据并发问题

1-池化思想 字符串常量池、数据库连接池、线程池 频繁使用的东西&#xff0c;不要每次都去创建 没连接池之前&#xff1a; &#xff08;1&#xff09;获取连接 &#xff08;2&#xff09;进行sql操作 &#xff08;3&#xff09;断开连接 存在问题 &#xff08;1&#xff09;每次…

AI学习指南数学工具篇-凸优化基础知识凸集

AI学习指南数学工具篇-凸优化基础知识凸集 在人工智能领域中&#xff0c;凸优化是一个非常重要的数学工具&#xff0c;而凸集作为凸优化的基础知识之一&#xff0c;扮演着至关重要的角色。本篇博客将围绕凸集展开讲解&#xff0c;包括凸集的定义、性质以及详细的示例&#xff…

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;获得数据盘相关信息 可以看到演示服务器的数据盘分区是&…

Java中的封装、继承和多态性详解

一、封装 技术难点 封装是面向对象编程的四大基本特性之一&#xff0c;它的主要目标是隐藏对象的内部状态和信息&#xff0c;只对外提供有限的访问接口。技术难点在于如何合理地设计类的私有成员变量和公有方法&#xff0c;以确保数据的安全性和操作的便捷性。封装要求开发者…

CentOS历史命令查询、用户操作审计

目录 历史命令查询 常规方法 直接解析历史命令文件&#xff08;推荐&#xff09; 用户操作审计 sudo日志 audit日志 systemd日志&#xff08;推荐&#xff09; 历史命令查询 常规方法 # 显示历史命令 history# 增加时间显示&#xff1a; # 临时生效 export HISTTIMEFO…

UVa1086/LA4452 The Minister’s Major Mess

UVa1086/LA4452 The Minister’s Major Mess 题目链接题意分析AC 代码 题目链接 本题是2009年icpc世界总决赛的H题 题意 n&#xff08;n≤500&#xff09;个人对m&#xff08;m≤100&#xff09;个方案投票。每个人最多只能对其中的4个方案投票&#xff08;其他相当于弃权票&a…

FastJSON2 > FastJSON 好在何处

FastJSON 是一种广泛使用的 JSON 解析库&#xff0c;其高性能和简单易用的特点受到开发者的喜爱。然而&#xff0c;随着应用场景的复杂化和安全要求的提高&#xff0c;FastJSON 逐渐暴露出一些问题。为了解决这些问题并进一步提升性能和安全性&#xff0c;阿里巴巴推出了 FastJ…

Linux基础入门和帮助-第一篇

马哥教育 Linux SRE 学习笔记 Linux基础 备注&#xff1a;本笔记使用Linux版本为Rocky 8.6和Ubuntu 23.10&#xff0c;大部分使用Rocky 8.6 查看当前的终端设备 tty命令可以查看当前所在的终端 范例&#xff1a; [rootrocky8 ~]$tty /dev/pts/0bash shell 显示当前使用的she…