Java:简单算法:冒泡排序、选择排序、二分查找

冒泡排序

在这里插入图片描述

// 1、准备一个数组
int[] arr = {5231};//2、定义一个循环控制排几轮
for (int i = 0; i < arr.length - 1; i++) {
// i = 0 1 2        【5,2,3,1】      次数
// i = 0 第一轮       0  1  2            3
// i = 1 第二轮       1  2               2
// i = 2 第三轮       0                  1//3、定义一个循环控制每轮比较几次。
for (int j = 0; i < arr.length-i-1; j++) {
//判断当前位置的元素值,是否大于后一个位置处的元素值,如果大则交换。
if(arr[j] > arr[j+1]){
int temp = arr[i+1];
arr[j+1] = arr[i];
arr[j] = temp;}}
}
system.out.println(Arrays.toString(arr));

选择排序

// 1、准备一个数组
int[] arr = {5231};//2、定义一个循环控制排几轮
for (int i = 0; i < arr.length - 1; i++) {
// i = 0 1 2        【5,2,3,1】      
//                    0 1  2  3
// i = 0 第一轮     j=   1  2  3          
// i = 1 第二轮     j=      2  3               
// i = 2 第三轮     j=         3                  //3、定义一个循环控制每轮比较几次。
for (int j = i + 1; i < 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));

简化代码,适用于当数组非常大时提高性能

// 1、准备好一个数组
int[] arr = {5132};/ ///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[i]){
minIndex = j;}
}
//决定是否交换。
if(i != minIndex) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;}
}
system.out.println(Arrays.toString(arr));

二分查找

  public static void main(String[] args) {//1.准备好一个数组,首先这个数组必须是排好顺序的int[] arr = {7,23,79,81,103,127,131,147};//接下来将二分法定义成一个方法,调用这个方法System.out.println(binarySearch(arr, 81));//返回 3 System.out.println(binarySearch(arr, 166));//返回 -1}public static int binarySearch(int[] arr, int data){//1.定义两个变量,一个站在左边位置,一个站在右边位置。int left = 0;int right = arr.length-1;//2.定义一个循环 控制折半while (left <= right){//3.每次折半都算出中间位置的索引int middle = (left + right)/2;//4.判断当前要找的元素值,与中间位置处的元素值的大小情况if (data < arr[middle]) {//往左边找,截止位置(右边位置) = 中间位置 - 1;right = middle -1;}else if (data >arr[middle]){//往右边找,截止位置(左边位置) = 中间位置 + 1;left = middle +1;}else {return middle;//刚好中间位置就是需要的元素}}return -1;//代表数组中没有要找的元素。}

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

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

相关文章

elk开启组件监控

elk开启组件监控 效果&#xff1a; logstash配置 /etc/logstash/logstash.yml rootnode1:~# grep -Ev "^#|^$" /etc/logstash/logstash.yml path.data: /var/lib/logstash path.logs: /var/log/logstash xpack.monitoring.enabled: true xpack.monitoring.elasti…

maven是什么?安装+配置

目录 1.什么是maven&#xff1f; 1.2.maven的核心功能是什么&#xff1f; 2.Maven安装配置 2.1Maven的安装 2.2Maven环境配置 1.配置 MAVEN_HOME &#xff0c;变量值就是你的 maven 安装的路径&#xff08;bin 目录之前一级目录&#xff09; 2.将MAVEN_HOME 添加到Path系…

【STM32RT-Thread零基础入门】 1. 搭建开发环境

文章目录 一、RT-Thread Studio 集成开发环境安装1. 下载2. 安装3. 下载SDK 二、STM32CubeMX 图形化配置工具安装1. 获取安装包2. 安装3. 安装固件库 总结 一、RT-Thread Studio 集成开发环境安装 1. 下载 可以从RT-Thread 官网上获取 RT-Thread studio 最新的安装包&#xf…

【MySQL--->环境配置】

文章目录 [TOC](文章目录) 一、卸载已存在数据库软件二、获取yum源并安装三、启动并登录四、文件配置五、链接服务器选项 一、卸载已存在数据库软件 用ps -axj |grep miadb或者ps -axj |grep mysql查询是否存在这两个启动的应用程序,如果有就将其关闭,以mysql为例:systemctl s…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

CentOS 7 下 Keepalived + Nginx 实现双机高可用

CentOS 7 下 Keepalived Nginx 实现双机高可用 文章目录 CentOS 7 下 Keepalived Nginx 实现双机高可用服务器准备服务信息服务架构 服务安装nginxKeepalived 服务配置nginxKeepalived 启动服务nginxkeepalived 服务验证查看 VIP 状态CURL 命令访问浏览器访问 高可用验证停止…

Unity UI.Image 六边形+流光 Shader

效果图 参考代码 Shader"Custom/HexFlowImage" {Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) "white" {}_Color ("Tint", Color) (1,1,1,1)_StencilComp ("Stencil Comparison", Float) 8_Stencil (…

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日&#xff0c;盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前&#xff0c;让我们先用一份精美的元气早餐&#xff0c;和一场“Arm虚拟硬件交流会”&#xff0c;唤醒各位开发小伙伴的开发魂&#xff01; 8月16日&#xff0c;WAVE SUMMIT大…

简单入门seleniumUI自动化测试

目录 一、selenium的介绍 二、selenium的原理 三、selenium的八种元素定位的方法 1、ID定位&#xff1a; 2 、name定位&#xff1a; 3、class定位&#xff1a; 4、tag定位&#xff1a; 5、link_text定位&#xff1a; 6、partial_link_text定位&#xff1a; 7、css定位…

【uniapp】uniapp设置安全区域:

文章目录 一、效果图:二、实现代码: 一、效果图: 二、实现代码: {"path": "pages/index/index","style": {"navigationStyle": "custom","navigationBarTextStyle": "white","navigationBarTitle…

Mysql:Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方案

最近在配置Maven以及Mybatis时&#xff0c;连接localhost数据库时出现无法连接&#xff0c;用cmd测试时报错&#xff1a;Access denied for user ‘ODBC’‘localhost’ (using password: NO)&#xff0c;这个意思就是不允许远程访问&#xff0c;一开始笔者进入mysql试了一下是…

为什么金鸣识别不做成离线版?

来百度APP畅享高清图片 在众多的用户咨询中&#xff0c;金鸣识别客服常常会被用户问及为何不做成离线版的问题&#xff0c;下面我就在这里跟大伙说说其中的原因吧。 离线版的OCR准确率相对于网络版可能会较低&#xff0c;主要有以下几个原因&#xff1a; 1. 数据量和模型更新…