Java之数组应用-冒泡排序-二分查找

news2024/9/24 11:21:57

冒泡排序

冒泡(Bubble Sort)排序是一种简单排序算法,它通过依次比较交换两个相邻元素实现功能。每一次冒泡会让至少一个元素移动到它应该在的位置上,这样 n 次冒泡就完成了 n 个数据的排序工作。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

冒泡排序算法实现步骤:

  1. 比较相邻的元素,如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素重复上述工作,从第一对到最后一对。完成后,最大的数会放到最后位置。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序过程具体见下图:
在这里插入图片描述

package com.briup.chap04;

import java.util.Arrays;

public class Test06_Sort {
	public static void main(String[] args) {
		int[] array = {4,5,3,2,1};
		
		//排序
		bubbleSort(array);

		//遍历
		System.out.println(Arrays.toString(array));
	}
	
	//冒泡排序
	public static void bubbleSort(int[] arr) {
		//每次排序,可以将 未排序序列中 最大值 放到最后位置
		//len个成员,一共排序len-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]) {
					arr[j] = arr[j] ^ arr[j+1];
					arr[j+1] = arr[j] ^ arr[j+1];
					arr[j] = arr[j] ^ arr[j+1];
				}
			}
			
			System.out.print("第"+(i+1)+"次排序后: ");
			System.out.println(Arrays.toString(arr));
		}		
	}
}

二分查找

​ 在一个有序序列中查找其中某个元素,我们可以采用二分查找(折半查找),它的基本思想是:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。

在这里插入图片描述

package com.briup.chap04;

public class Test06_BinarySearch {
	//二分查找:针对有序序列进行 查找
	public static void main(String[] args) {
		int[] arr = {1,  3,  4,  5,  7,  9,  10};
		
		int index = binarySearch(arr, 1);
		System.out.println("1: " + index);
		
		index = binarySearch(arr, 2);
		System.out.println("2: " + index);
		
		index = binarySearch(arr, 10);
		System.out.println("10: " + index);
	}
	
	//二分查找算法,如果value存在arr中,则返回元素位置,如果找不到返回-1
	public static int binarySearch(int[] arr,int value) {
		int start = 0;
		int end = arr.length - 1;
		int mid;
		while(true) {
			mid = (start+end) / 2;
			
			if(value == arr[mid])
				return mid;
			else if(value > arr[mid]) {
				start = mid + 1;
			}else {
				end = mid - 1;
			}
			
			//当start > end 循环结束
			if(start > end)
				break;
		}
		
		return -1;
	}
}

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

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

相关文章

python实现图像缩放算法

图像缩放算法 1.最近邻插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点2.双线性插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点3.双三次插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点 1.最近邻插值图像缩放算法详解 最近邻插值&#xff08;Near…

【网络】计算机网络基础——计算机网络背景和发展、认识网络协议、OSI七层模型、TCP/IP四层模型、网络的传输

文章目录 Linux网络1. 计算机网络背景和发展2. 认识网络协议3. OSI七层模型3.1 物理层3.2 数据链路层3.3 网络层3.4 传输层3.5 会话层3.6 表示层3.7 应用层 4. TCP/IP四层模型5. 网络的传输 Linux网络 1. 计算机网络背景和发展 开始的计算机都是独立模式&#xff08;计算机之间…

与众不同的社交体验:Facebook的新功能与新变化

在快速变化的社交媒体领域&#xff0c;Facebook不断引入创新功能和变化&#xff0c;以满足用户日益增长的需求&#xff0c;并提供与众不同的社交体验。从增强现实到数据隐私&#xff0c;Facebook的新功能和更新正在塑造一个全新的社交平台。本文将深入探讨这些新功能和变化&…

3W单声道关断模式音频功率放大器AD4150B

前言&#xff1a; 国产功放介绍 NS4890C 2.4W 单声道AB类音频放大器 AD4150B 3W单声道关断模式音频功率放大器 参考价格0.3元 产品概述 AD4150B是一款单声道带关断模式&#xff0c;桥式音频功率放大器。在5.5V工作电压时&#xff0c;平均驱动功率为&#xff1a;3W&#xff08…

计算机网络之http和https的区别(外加http详解)

http协议和各种协议之间的关系 1、DNS解析&#xff0c;获取到访问服务器的IP 2、HTTP生成请求报文请求&#xff0c;请求访问页面资源 3、TCP协议将报文切割成一份一份报文段后&#xff0c;以可靠的方式进行传输 4、IP协议边搜索边中转&#xff0c;将这些数据包传输给接受方…

关于c#的简单应用三题

#region 输入一个正整数&#xff0c;求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…

详解Stable Diffusion 原理图

参考英文文献&#xff1a;The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. 在这个Stable Diffusion模型的架构图中&#xff0c;VAE&#xff08;变分自编码器&#xff09;模型对应的是图中的 E 和 D 部分。 具体来说…

keystone学习小结2

简介 通过源码 官方文档 进行学习 官方文档 架构 identity 提供user和group的鉴权及数据 可以用这些数据处理增删改查的请求 这些服务在某些情况也可以托管在授权的服务中&#xff0c;有认证任务时&#xff0c;授权的服务会执行认证的任务&#xff0c;而不会把这些转发到…

SuperMap GIS基础产品FAQ集锦(20240715)

一、SuperMap iDesktopX 问题1&#xff1a;想问一下&#xff0c;线数据更改粗细和颜色&#xff0c;他只能保存到地图中吗&#xff1f;我希望能修改源数据&#xff0c;但是保存不了&#xff1f; 11.1.1 【问题原因】简单数据集不支持保存风格。 【解决办法】入需保存风格&…

SAP中途增加批次管理提示:库存在工厂级别已经存在。

SAP中途增加批次管理提示&#xff1a;库存在工厂级别已经存在。 在这种情况&#xff0c;将需要启用批次管理功能的物料主数据进行出库&#xff0c;通过移动类型201&#xff08;562&#xff09;进行出库&#xff0c;然后再修改物料主数据&#xff0c;当成功启用物料主数据的批次…

前置-Linux相关知识速记

linux Linux命令大全 [!IMPORTANT] chown-chmod-ls-chgrp-cdpwd-mkdir-rmdir-cp-rm-mv-cat-tac-nl-more-less-head-tail 应用领域 通常服务器使用 LAMP&#xff08;Linux Apache MySQL PHP&#xff09;或 LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;组合。 目前…

700.二叉搜索树的搜索

给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3], val 2 输出&#xff1a;[2,1,3]…

SmartX 超融合 vs vSAN 8:数据库场景下的性能对比

此前&#xff0c;我们以 vSAN 7 为例&#xff0c;对比了 SmartX 与 VMware 超融合在快照、缓存、I/O 路径上的技术差异&#xff0c;及其带来的性能影响。不同于 vSAN 7&#xff0c;vSAN 8 引入了快速存储架构 ESA&#xff08;Express Storage Architecture&#xff09;&#xf…

SpringCloud------Seata(分布式事务)

分布式事务产生原因 CAP定理(一致性、可用性、分区容错性) BASE理论 解决思想 Seata 三个角色

【操作系统】线程池的底层逻辑解析及实现

目录 线程池一、线程池是什么二、底层线程池 ThreadPoolExecutor三、实现线程池四、标准库中的线程池Executors 线程池 一、线程池是什么 在我们频繁的创建线程时或销毁线程时,都会进行系统调度从而占用系统资源,虽然创建线程/销毁线程的开销不是很大,但架不住量多,进而我们该…

photoshop学习笔记——选区

选区工具快捷键&#xff1a;M shift M 切换 矩形/椭圆选区工具 基本用法 选区框选出的地方被激活&#xff08;其后进行的操作&#xff0c;仅在选区中生效&#xff09; 选区工具选择后&#xff08;以矩形选区为例&#xff09; 按下鼠标左键拖动&#xff0c;画出一块矩形区…

TCP连接与释放

目录 引言 一. TCP连接的建立 二.TCP连接的释放 三.TCP连接状态机 引言 传输控制协议(Transmission Control Protocol,TCP)作为互联网上最广泛使用的协议之一,其在网络通信中扮演着关键角色。其中,TCP连接的建立与释放是TCP协议中最为重要的部分之一。本文将对TCP连接的建立…

【笔记:3D航路规划算法】一、RRT

目录 关键概念3D路径规划算法1. A*算法2. RRT1. 初始化&#xff1a;2. 实例化搜索算法&#xff1a;3. 路径生成&#xff1a;4. 绘制图像&#xff1a; 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、虚拟现实等…

谷粒商城实战笔记-48~49-商品服务-API-三级分类-查询-树形展示三级分类数据-前端优化

文章目录 一&#xff0c;48-商品服务-API-三级分类-查询-树形展示三级分类数据1&#xff0c;创建商品服务命名空间2&#xff0c;商品服务增加配置3&#xff0c;网关增加商品服务的路由配置4&#xff0c;前端树形展示5&#xff0c;测试 二&#xff0c;49-商品服务-API-三级分类-…

未来的智能交通系统:智能合约在交通管理中的应用前景

随着城市化进程的加快和交通问题日益突出&#xff0c;智能交通系统成为了解决城市交通拥堵和安全问题的重要手段。本文将探讨智能合约在未来智能交通系统中的应用前景&#xff0c;分析其在交通管理中的潜力和优势。 什么是智能交通系统&#xff1f; 智能交通系统利用先进的信息…