Java基础 |数组排序

Java基础课| 数组排序

  • 冒泡排序
  • 直接选择排序
  • 反转排序

冒泡排序

他排序数组的过程中总将较小的数往前排,较大的数往后放,类似水中气泡往上升的动作,所以叫冒泡排序。
基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(交换两个元素)。
用两个循环来实现:一个循环用来控制排序的轮次,另一个用来做交换。
而且每次轮次需要排序的次数也会少一次,因为每一轮都会把最大的数字放到最后一位去。

冒泡排序的时间复杂度 是O(n²)。

public class BubbleSort {public static void main(String[] args) {int[] array = {63,4,24,1,3,15};BubbleSort sorter = new BubbleSort();sorter.sort(array);for (int i=0;i<array.length;i++) {System.out.print(array[i]+" ");}}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 a = array[j];array[j] = array[j+1];array[j+1] = a;}}}}
}

直接选择排序

将指定排序位置元素与其他元素分别对比,交换位置,所以是把满足条件的元素与指定的排序位置交换(比如从最后一个元素开始排序),知道整个数组排序。

也是双循环,第一个循环控制几个轮次,第二个循环来找最大值。
直接选择的时间复杂度是O(N log(N))。

public class SelectSort {public static void main(String[] args) {int[] array = {63,4,24,1,3,15};SelectSort sorter = new SelectSort();sorter.sort(array);for (int i=0;i<array.length;i++) {System.out.print(array[i]+" ");}}public void sort(int[] array) {int m;//需要几个轮次,每个轮次都找最大值for (int i=1; i<array.length;i++) {m = 0;for (int j=1; j<=array.length-i;j++) {if (array[j]>array[m]) {m = j;}}int a = array[m];array[m] = array[array.length-i];array[array.length-i] = a;}}
}

反转排序

以相反的顺序把数组重新排序,实现办法是第一个元素和最后一个交换,第二个和倒数第二个交换,一直到全部交换。

public class ReverseSort {public static void main(String[] args) {int[] array = {10,20,30,40,50,60};ReverseSort sorter = new ReverseSort();sorter.sort(array);for (int i=0;i<array.length;i++) {System.out.print(array[i]+" ");}}public void sort(int[] array) {int len = array.length;for (int i=0;i<len/2;i++) {int a = array[i];array[i] = array[len-1-i];array[len-1-i] = a;}}
}

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

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

相关文章

2024-01-01 K 次取反后最大化的数组和和加油站以及根据身高重建队列

1005. K 次取反后最大化的数组和 思路&#xff1a;每一次取反最小值即可&#xff01;贪心的思路就是先排序&#xff0c;反转负数的值&#xff0c;后在贪心反转最小值 class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:count 0while …

Unity中URP下开启和使用深度图

文章目录 前言一、在Unity中打开URP下的深度图二、在Shader中开启深度图1、使用不透明渲染队列才可以使用深度图2、半透明渲染队列深度图就会关闭 三、URP深度图 和 BRP深度图的区别四、在Shader中&#xff0c;使用深度图1、定义纹理和采样器2、在片元着色器对深度图采样并且输…

LeetCode刷题--- 最小路径和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

setup 语法糖

只有vue3.2以上版本可以使用 优点&#xff1a; 更少的样板内容&#xff0c;更简洁的代码 能够使用纯 Typescript 声明props 和抛出事件 更好的运行时性能 更好的IDE类型推断性能 在sciprt标识上加上setup 顶层绑定都可以使用 不需要return &#xff0c;可以直接使用 使用组件…

Redis异步写失败后补数逻辑设计

背景 最近各种机房事故频发&#xff0c;所以很多公司都对Redis存储等进行异步多活&#xff0c;我们公司采用的方式是通过客户端双写的方式来实现异地Redis机房的备份&#xff0c;但是当异地机房出现临时网络故障时&#xff0c;就涉及到了如何进行补数的操作&#xff0c;本文就…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的Mono10转换为Mono8图的技术背景在NEOAPI SDK里实现相机图像由Mono10转换为Mono8格式 工业相机通过NEOAPI SDK实现相机图像转换的优…

【大麦小米学量化】升级pywencai解决同花顺问财接口访问问题实现智能选股(小白避坑指南)

文章目录 前言一、pywencai 怎么了&#xff1f;二、解决办法三、智能选股代码&#xff08;缺环境的&#xff0c;请看开头文章推荐的博文&#xff09;总结 前言 前面撰文&#xff1a;【大麦小米学量化】通过pywencai访问同花顺问财接口实现智能选股 很多小伙伴应该已经用得很六…

理解Herbrand Equivalence

笔者最近在看GVN的一系列论文&#xff0c;总会看到一个概念叫Herbran Equivalence&#xff0c;依靠这种定义&#xff0c;能够判断一个GVN算法是否是complete的&#xff0c;也即检测一个算法是否是precise的&#xff0c;只有找到所有Herbrand Equivalence关系的算法才能称得上是…

Ddos攻击防御之使用nginx

Ddos 攻击是最常见的web攻击了,原理非常简单,用自己的电脑模拟大量用户发送大量请求,apache 的 ab 压力测试工具就可以做到这一点,如果我这样做,而对方的服务器配置没有我电脑好,那么一会之后,对方的服务器就难以响应其他用户的请求,如果我控制了大量肉鸡并使用这些肉鸡…

2024.1.10

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

01-你好Python-python环境安装 python解释器的安装 pycharm的安装

python环境安装 官方网址&#xff1a;https://python.org 这里可以下载最新版本的&#xff0c;下载完成以后在自己的浏览器文件下载的文件夹中找到该文件 下载速度可能会比较慢&#xff0c;这里已经提供好了文件&#xff0c;可以直接点击安装 点击Customize installation 点击…

2. Spring Boot 自动配置 Mybatis 流程

1. Spring Boot 自动配置 Mybatis 自动配置过程中做了3个主要bean的创建及很重要的一些事情。 sqlSessionFactory、sqlSessionTemplate、MapperScannerConfigurer 等配置bean的创建。sqlSessionFactory&#xff1a;解析 xml配置文件&#xff0c;并将MappedStatement放入到Has…

Mybatis之基本操作

目录 一、Mybatis中的增删改操作1、单个insert2、单个delete3、批量select4、单个update 二、数据输入1、单个简单的类型2、实体类类型参数3、零散的简单类型数据4、Map参数的数据类型①使用场景②对应关系 三、数据输出1、返回单个简单类型数据2、返回实体类对象3、返回Map类型…

pulsar的架构与特性记录

一、什么是云原生 云原生的概念是2013年Matt Stine提出的,到目前为止&#xff0c;云原生的概念发生了多次变更&#xff0c;目前最新对云原生定义为: Devps持续交付微服务容器 而符合云原生架构的应用程序是: 采用开源堆栈(K8SDocker)进行容器化&#xff0c;基于微服务架构提高灵…

人工智能利用深度学习技术增强高级驾驶辅助系统(ADAS)

深度学习通过实时传感器数据增强高级驾驶辅助系统(ADAS)&#xff0c;实现精确的物体检测、碰撞预测和主动决策。 人工智能和机器学习利用深度学习技术的优势&#xff0c;使高级驾驶辅助系统(ADAS)发生了重大变革。ADAS在很大程度上依赖深度学习来分析和解释从各种传感器获得的…

Flutter 中使用 ICON

Flutter Icon URL &#xff1a; https://fonts.google.com/icons&#xff1a; 在Flutter中使用 Icon 步骤如下&#xff1a; 导入图标库 在Dart 文件中导入 material.dart 包&#xff0c;该包包含了 Flutter 的图标库。 import package:flutter/material.dart;使用图标组件 …

解决Vue.js not detected的问题

"Vue.js not detected"通常是由于Vue Devtools无法检测到你的Vue.js应用程序而引起的。这个问题可能有几种原因&#xff0c;下面是一些建议的解决方法&#xff1a; 1. **安装Vue Devtools浏览器插件:** - 确保你已经安装了Vue Devtools浏览器插件。你可以在Chrom…

救赎之道,就在其中

时光荏苒&#xff0c;不知不觉距离我踏入职场的第一天已经快一年了。最近也是看到平台举办年度征文活动&#xff0c;借此契机重新审视自己这两年来的成长历程&#xff0c;也希望对正在迷茫的人提供一些精神上的慰藉。 1.对未来的迷茫 如果要给两年前的自己打上标签&#xff0…

独立站营销:那些适合海外推广的视频平台!

对于独立站来说&#xff0c;利用视频平台进行营销是扩大影响力和吸引观众的重要策略。在海外推广视频网站时&#xff0c;选择适合的平台很关键。那么除了我们熟知的YouTube、TikTok等视频平台&#xff0c;还有哪些不错的海外视频网站呢&#xff1f; 一、Rumble 众所周知&…

在IntelliJ IDEA上使用通义灵码(TONGYI Lingma)

参考链接&#xff1a; 通义灵码产品介绍_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 【IDEA如何使用通义灵码&#xff1f;】_idea 通义灵码-CSDN博客 1. 简介 1.1 定义 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提…