Java | 数组排序算法

news2024/11/25 10:42:51

一、冒泡排序

冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移到数组前面,把较大的元素移到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部升到顶部。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int[] array= {63,4,24,1,3,15};  //创建一个数组,元素是乱序的
		helloworld sorter=new helloworld();  //创建冒泡排序类的对象
		sorter.sort(array);
	}
	
	public void sort(int[] array) {
		for(int i=1;i<array.length;i++)
		{
			//比较相邻两个元素,较大的元素往后冒泡
			for(int j=0;j<array.length-i;j++)
			{
				if(array[j]>array[j+1])
				{
					int temp=array[j];  //把第一个元素值保留到临时变量中
					array[j]=array[j+1];  //把第二个元素的值保存到第一个元素单位中
					array[j+1]=temp;   //把临时变量(第一个元素原值)保存到第二个元素单位中
				}
			}
		}
		showArray(array);
	}
	
	public void showArray(int[] array) {
		for(int i:array)
		{
			System.out.print(">"+i);
		}
		System.out.println();
	}
}

二、直接选择排序

直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值。注意这里与冒泡排序的区别,不是交换相邻元素,而是把满足条件的元素与指定的排序位置元素交换(如从最后一个元素开始排序),这样排序好的位置逐渐扩大,直至整个数组都变成已排序好的格式。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int[] array= {63,4,24,1,3,15};  //创建一个数组,元素是乱序的
		helloworld sorter=new helloworld();  //创建直接排序类的对象
		sorter.sort(array);  //调用排序类对象方法,对数组排序
	}
	
	public void sort(int[] array) {
		int index;
		for(int i=1;i<array.length;i++)
		{
			index=0;
			for(int j=1;j<=array.length-i;j++)
			{
				if(array[j]>array[index])
				{
					index=j;
				}
			}
			//交换在位置array,length-i和index(最大值)上的两个数
			int temp=array[array.length-i];
			array[array.length-i]=array[index];
			array[index]=temp;
		}
		showArray(array);
	}
	
	public void showArray(int[] array) {
		for(int i:array)
		{
			System.out.print(">"+i);
		}
		System.out.println();
	}
}

三、反转排序

反转排序的基本思想比较简单,也很好理解,其实思路就是把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,依此类推,直到把所有数组元素反转替换。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int[] array= {10,20,30,40,50,60};  //创建一个数组
		helloworld sorter=new helloworld();  //创建反转排序类的对象
		sorter.sort(array);  //调用排序类对象方法,将数组反转
	}
	
	public void sort(int[] array) {
		System.out.println("数组原有内容:");
		showArray(array);
		int temp;
		int len=array.length;
		for(int i=0;i<len/2;i++)
		{
			temp=array[i];
			array[i]=array[len-i-1];
			array[len-i-1]=temp;
		}
		System.out.println("数组反转后内容:");
		showArray(array);
	}
	
	public void showArray(int[] array) {
		for(int i:array)
		{
			System.out.print("\t"+i);
		}
		System.out.println();
	}
}

 

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

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

相关文章

Python2、python3的安装

目录 一、环境搭建和简单命令 1. 关于交互模式 2.执行文件 3. print 4. 安装/卸载包 5. 查看安装了哪些包 6. 升级pip本身 7. 查看包的具体信息 8. 搜索含有nose 9. 所有包升级到最新版本 二、其他说明 1. –m的使用 2. 切换盘符 资料获取方法 一、环境搭建和简单…

vue3 项目打包后白屏

根据Vue3.x文档&#xff0c;在 vue.config.js/vite.config.ts 统一对webpack、跨域、端口号等属性进行配置。 1.在 vue.config.js/vite.config.ts添加publicPath属性并将值更改成 ‘./’ 在这里插入图片描述 2.若还没有解决就去路由中将history模式设置成默认的Hash模式&…

MATLAB与ROS联合仿真——Simulink生成ROS代码

当我们用simulink完成控制程序的搭建后&#xff0c;我们期望下一次可以直接对ROS进行控制&#xff0c;而不是每次都需要启动matlab和simulink&#xff0c;因此我们可以使用simulink的代码生成器&#xff0c;生成ROS代码 1、生成代码前需要进行如下的设置 &#xff08;1&#xf…

Fuzz测试:提升自动驾驶安全性

目录 什么是Fuzz测试&#xff1f; 自动驾驶的潜在风险 Fuzz测试&#xff1a;自动驾驶和车联网 Fuzz测试方法有以下几种&#xff1a; 资料获取方法 纵观近百年来汽车制造业的发展历程&#xff0c;产业跨进的每一步背后都有着技术创新作为支撑。汽车技术创新对世界经济、社会…

openCV-python安装

同样在anaconda下创建一个opencv-python环境 首先&#xff0c;打开anaconda navigator,然后创建一个环境来放opencv-python。 先点击下面的create&#xff0c;然后创建一个新环境。 选择你的python版本&#xff0c;这里我选择的是Python3.6。你也可以根据你的需要和习惯来选择…

【前后端数据交互】原生JS的Fetch请求封装

一、 AJAX 和 Fetch 对比 1.1 AJAX 概述 AJAX 是最早出现请求数据的方式&#xff0c;它不需要不需要刷新整个页面即可更新部分数据。 属于原生 JS 范畴 &#xff0c;技术核心是 XMLHttpRequest 对象。 AJAX 请求过程&#xff1a;创建 XMLHttpRequest 对象、连接服务器、发送请…

持续上新丨美格智能推出高算力AI模组SNM930,支持运行Linux Ubuntu

近日&#xff0c;美格智能宣布推出最新的高算力AI模组SNM930。该模组基于高端SoC高通QCS6490平台研发设计&#xff0c;支持WiFi 6E和蓝牙5.2连接&#xff0c;AI算力高达14Tops&#xff0c;是行业首款除支持Android外&#xff0c;还可以运行 Linux Ubuntu的智能模组&#xff0c;…

k8s常见的资源对象使用

目录 一、kubernetes内置资源对象 1.1、kubernetes内置资源对象介绍 1.2、kubernetes资源对象操作命令 二、job与cronjob计划任务 2.1、job计划任务 2.2、cronjob计划任务 三、RC/RS副本控制器 3.1、RC副本控制器 3.2、RS副本控制器 3.3、RS更新pod 四、Deployment副…

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块7

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

js路由跳转时放弃正在pending的请求

在单页面应用中通常会对请求进行catch处理&#xff0c;如果用户打开a页面后页面发出了一个请求去获取aaa&#xff0c;但是由于某种原因请求一直在pending。此时用户又进入了b页面&#xff0c;在浏览时a页面的请求失败了&#xff0c;然后页面弹出提示&#xff1a;“数据aaa请求失…

pearcmd.php文件包含妙用

文章目录 pearcmd.php文件包含妙用利用条件原理利用config-createinstalldownload pearcmd关键词被ban参考 pearcmd.php文件包含妙用 利用条件 php.ini中register_argc_argvOn开启安装pecl/pear pecl是PHP中用于管理扩展而使用的命令行工具&#xff0c;而pear是pecl依赖的类…

【stable diffusion】保姆级入门课程05-Stable diffusion(SD)图生图-涂鸦重绘的用法

1.什么是涂鸦重绘 涂鸦重绘又称手涂蒙版。 简单来说&#xff0c;局部重绘手涂蒙版 就是涂鸦局部重绘的结合体&#xff0c;这个功能的出现是为了解决用户不想改变整张图片的情况下&#xff0c;对多个元素进行修改。 功能支持&#xff1a; 1.支持蒙版功能 2.笔刷决定绘制的元素…

如何在win10环境下配置强化学习gym库(使用vscode)

我是通过anacondavscode完成的gym库的使用&#xff0c;只是把案例跑起来了&#xff0c;具体步骤如下&#xff1a; 1、安装anaconda,参考链接&#xff1a;https://www.jianshu.com/p/2f3be7781451 我其实就是生安装的&#xff0c;也没有去配置环境啥的&#xff0c;就是下载安…

贪心算法重点内容

贪心算法重点内容 4.1部分背包 按照单位重量的价值排序 4.2最小生成树 两种算法 4.3单源最短路径 4.4哈夫曼树

Vector3.Dot

如图&#xff1a;cube在cube&#xff08;2&#xff09;的前方、 public class DotTest : MonoBehaviour {public GameObject a;public GameObject b;// Start is called before the first frame updatevoid Start(){var vVector3.Dot(a.transform.forward,b.transform.position…

丑数 II 力扣(动态规划)JAVA

给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;12 解释&#xff1a;[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。 示例 2&#xff…

MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

文章目录 前言 一 MySQL数据库 1.1 什么是数据库&#xff1f; 1.2 RDBMS 术语 1.3 DBMS解释 1.4 数据库分类 1.5 MySQL现状 二 在Linux/UNIX 上安装 MySQL 2.1 安装 MySQL 2.2 验证 MySQL 安装 2.3 使用 MySQL Client(Mysql客户端) 执行简单的SQL命令 2.4 Mysql安装…

153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&#xff1a;ST…

代码随想录算法训练营一刷总结

第一次系统地刷leetcode 经过两个多月终于一刷完结 虽然不是按部就班每天都写 但总算坚持下来了 夸夸自己&#xff01;&#xff01; 非常感谢卡哥 题目的解析都写的很清楚易懂 才让我能够坚持这么一题一题做下来 没有卡住不前 训练营的学习氛围让我感受到很多小伙伴在和我一起…

服务器数据库中了Locked勒索病毒,企业应该如何正确处理并采取后续防护措施

网络技术的发展极大地方便了人们的工作生活&#xff0c;但同样带来了一定的网络安全威胁&#xff0c;其中较为危险的威胁就是勒索病毒攻击&#xff0c;勒索病毒不仅会给我们的计算机系统带来破坏&#xff0c;还会加密我们的重要文件数据来敲诈勒索&#xff0c;只有用户支付的赎…