算法,排序

算法

解决某个实际问题的过程和方法!

学习算法:

1、先搞清楚算法的流程

2、直接去推敲如何写代码

排序算法

冒泡排序

每次从数组中找出最大值放在数组的后面去。

package algorithm;import java.util.Arrays;public class Test1 {public static void main(String[] args) {// 1、定义一个数组int[] arr = {5,2,3,1};// 2、定义一个循环控制几轮for (int i = 0; i < arr.length - 1; i++) {//3、定义一个循环控制每轮比较几次for (int j = 0; j < arr.length -i - 1; j++) {//判断当前位置的元素值,是否大于后一个位置处的元素值,如果大则交换if(arr[j] > arr[j+1]){int temp = arr[j + 1];arr[j + 1] = arr[j];arr[j] = temp;}}}System.out.println(Arrays.toString(arr));}
}

实现冒泡排序的关键步骤分析:

确定总共需要做几轮:数组的长度 - 1;

每轮比较次数 。

当前位置大于后一位置。

选择排序

每轮选择当前位置,开始找出后面的较小值与该位置交换。 

package algorithm;import java.util.Arrays;public class Test2 {public static void main(String[] args) {//1、准备数组int[] arr = {5, 1, 3, 2};//2、控制选择几轮for (int i = 0; i < arr.length - 1; i++) {// 3、控制每轮选择几次for (int j = i + 1; j < arr.length; j++) {// 判断当前位置是否大于后面位置处的元素值,若大于则交换if(arr[i] > arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}System.out.println(Arrays.toString(arr));}
}

 实现选择排序优化:

package algorithm;import java.util.Arrays;public class Test2 {public static void main(String[] args) {//1、准备数组int[] arr = {5, 1, 3, 2};//2、控制选择几轮for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;// 3、控制每轮选择几次for (int j = i + 1; j < arr.length; j++) {// 判断当前位置是否大于后面位置处的元素值,若大于则交换if(arr[minIndex] > arr[j]){minIndex = j;}}if(minIndex != i){int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}System.out.println(Arrays.toString(arr));}
}

 选择排序的关键:

确定总共需要选择几轮:数组的长度-1;

控制每轮从以前位置为基准,与后面元素选择几次。

二分查找算法:

 前提条件:数组中的数据必须是有序的;

核心思想:每次排除一般的数据,查询数据的性能明显提高极多!

package algorithm;public class Test3 {public static void main(String[] args) {//1、准备数组int[] arr = {7, 23, 79, 80, 103, 124, 134, 146};System.out.println(binarySearch(arr, 80));//3System.out.println(binarySearch(arr, 100));//-1}public static int binarySearch(int[] arr, int data){//1、定义两个变量,一个站在左边位置,一个站在右边位置int left = 0;int right = arr.length - 1;//2、定义一个循环控制折半。while(left <= right){int mid = (left + right) / 2;if(arr[mid] > data){right = mid - 1;}else if(arr[mid] < data){left = mid + 1;}else{return mid;}}return -1;}
}

  正则表达式

 由一些特定的字符组成,代表一个规则。

作用:

1、校验数据格式是否合法;

2、在一段文本中查找满足要求的内容。

package d2_regex;//校验qq号是否正确,要求全部是数字,长度是6-20之间,不能以0开头
public class RegexTest1 {public static void main(String[] args) {System.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("254167841"));//trueSystem.out.println(checkQQ("2541ds434"));//falseSystem.out.println("=================");System.out.println(checkQQ1(null));System.out.println(checkQQ1("254167841"));System.out.println(checkQQ1("2541ds434"));}//正则表达式public static boolean checkQQ1(String qq){return qq != null && qq.matches("[1-9]\\d{5,19}");}public static boolean checkQQ(String qq){//1、判断qq号码是否为nullif(qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){return false;}//2、qq至少是不是null,不是以8开头的,满足6-20之间的长度//判断qq号码中是否都是数字//qq = 2514ghd234for (int i = 0; i < qq.length(); i++) {//根据索引提取当前位置处的字符char ch = qq.charAt(i);//判断ch记住的字符,如果不是数字,qq号码不合法if(ch<'0'||ch>'9'){return false;}}return true;}
}

 规则:

 

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

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

相关文章

【Java项目介绍和界面搭建】拼图小游戏——添加图片

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

elementUI el-table中的对齐问题

用elementUI时&#xff0c;遇到了一个无法对齐的问题&#xff1a;代码如下&#xff1a; <el-table :data"form.dataList" <el-table-column label"验收结论" prop"checkResult" width"200"> <template slot-sco…

机器人与AGI会撞出什么火花?

真正的科技变革是不是就要来临了&#xff1f;各方大佬都开始布局机器人&#xff0c;对于普通人的就业会造成什么影响&#xff1f; ​ 优牛企讯-企业动态信息监控专家 在优牛企讯-企业动态监控专家搜索可知&#xff0c;全国目前的机器人公司已经达到了26401家&#xff0c;近一年…

WSL2内存管理

1 限制WSL2内存使用 2.1 在Windows资源管理器路径框输入%UserProfile%跳转到当前用户路径 2.2 在当前用户路径下新建.wslconfig文件&#xff0c;内容&#xff1a; [wsl2] processors8 memory8GB swap8GB localhostForwardingtrue 2.3 重启WSL 2 定期清理缓存 sudo crontab -e -…

表单验证、属性绑定(一个属性根据另一个属性有无进行操作)

表单验证 一个属性根据另一个属性有无进行操作&#xff08;属性绑定&#xff09; 1、问题描述 ​ 需求&#xff1a;表单里面后两个属性需要根据前面一个属性进行有无判断。如果前面属性没有输入值&#xff0c;则不需要进行操作&#xff1b;如果前面属性有输入值&#xff0c;则…

基于centos的linux上docker安装,及mysql、redis等应用在docker容器中的安装

Docker环境安装 安装yum-utils&#xff1a; yum install ‐y yum‐utils device‐mapper‐persistent‐data lvm2为yum源添加docker仓库位置&#xff1a; yum‐config‐manager ‐‐add‐repo https://download.docker.com/linux/centos/docker‐ce.repo如果上面执行命令后…

【Educoder数据挖掘实训】异常值检测-箱线图

【Educoder数据挖掘实训】异常值检测-箱线图 开挖&#xff01; 关于箱线图&#xff0c;核心理念就是找出上四分位数和下四分位数&#xff0c;定义二者的差为 I Q R IQR IQR。上下四分位数分别向上下扩展 1.5 I Q R 1.5IQR 1.5IQR定义为上界和下界&#xff0c;在此之外的数据被…

前端导出word文件的多种方式、前端导出excel文件

文章目录 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09;使用模板导出 前端通过模板字符串导出word文件前端导出 excel文件&#xff0c;node-xlsx导出文件&#xff0c;行列合并 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09; 先看效果&#xf…

森林灭火利器|便携式森林消防灭火泵|恒峰智慧科技

随着人们对环境保护意识的不断提高&#xff0c;森林防火工作显得尤为重要。然而&#xff0c;传统的森林灭火方式存在诸多不便&#xff0c;如火势蔓延迅速、灭火效率低下等。为了更好地保护森林资源&#xff0c;科学家们研发出了一种便携式森林消防灭火泵&#xff0c;它的出现为…

git安装4.3

一、git的安装 1、下载git包 下载git包url&#xff1a;https://git-scm.com/download/win 下载包分为&#xff1a;64位和32位 2、点击安装包 2、选择安装路径 3、 点击下一步 4、点击next 5、点击next 6、点击next 7、 8、 9、 10、 11、 12、在桌面空白处&#xff0c;右键…

零成本建站方案之Github Pages

之前的文章中介绍了如何申请AWS免费服务器并使用WordPress来搭建个人网站&#xff0c;今天给大家介绍一种无需任何硬件资源&#xff0c;也就是不需要准备服务器就可以搭建一个网站的方案&#xff0c;那就是使用github pages来搭建一个静态网站。 第一步&#xff0c;需要准备一个…

JavaScript类型转换

一些需要注意的数据类型&#xff1a; NaN的数据类型是numberArray、Date、null的数据类型是object未定义变量的数据类型是undefined 自动转换类型&#xff1a;尝试操作一个 “错误” 的数据类型时&#xff0c;会自动转换为 “正确” 的数据类型。 5 null // 返回 5 …