介绍java中的选择排序

Java排序算法——选择排序(Selection Sort) 上次总结了一下冒泡排序,这次来看看同样非常简单的选择排序 上期冒泡排序传送门: Java排序算法——冒泡排序(Bubble Sort)https://blog.youkuaiyun.com/babbfqb93/article/details/123005968?spm=1001.2014.3001.5501 选择排序(Selection Sort)就是通过选择一个数组中的最大(小)值排序到数组的头部位置(和头部位置交换)接下来循环剩余数组找到次最大(小)值排序到第二的位置,以此类推,直到所有的数字都被选择完成之后 阅读详情

选择排序(Selection Sort)是一种简单直观的排序算法,其基本思想是:将数组分为两个部分,一个部分为有序的,一个部分为无序的。每次从无序部分中选择最小的元素,将其放到有序部分的末尾。重复这个过程直到整个数组有序为止。

下面是 Java 语言实现选择排序的代码:

public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int len = arr.length;
        int minIndex, temp;
        for (int i = 0; i < len - 1; i++) {
            minIndex = i;
            for (int j = i + 1; j < len; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

代码中的 selectionSort 方法实现了选择排序算法。首先获取数组的长度,然后定义两个变量 minIndex 和 temp。变量 minIndex 存储无序部分中最小元素的位置,变量 temp 存储交换位置时用到的临时变量。在外层循环中,i 从 0 开始遍历到 len - 1,每次都会将最小元素放到有序部分的末尾。内层循环中,j 从 i + 1 开始遍历到 len - 1,找到无序部分中最小元素的位置 minIndex。在找到最小元素之后,将其与无序部分的第一个位置交换,即将无序部分中的第一个元素与最小元素交换位置,从而将最小元素放到有序部分的末尾。

接下来给出一个例子,假设有一个数组 arr = {5, 8, 3, 1, 6},按照选择排序的算法流程进行排序,具体过程如下:

  1. 第一趟排序,设置有序部分为 {5},无序部分为 {8, 3, 1, 6},找到无序部分中最小的数 1,并将其与无序部分的第一个数交换位置,得到数组 {1, 8, 3, 5, 6}。
  2. 第二趟排序,设置有序部分为 {1, 5},无序部分为 {8, 3, 6},找到无序部分中最小的数 3,并将其与无序部分的第一个数交换位置,得到数组 {1, 3, 8, 5, 6}。
  3. 第三趟排序,设置有序部分为 {1, 3, 5},无序部分为 {8, 6},找到无序部分中最小的数 6,并将其与无序部分的第一个数交换位置,得到数组 {1, 3, 5, 6, 8}。
  4. 排序完成。

以上就是 Java 中选择排序算法的详细介绍。

【排序算法】选择排序原理及Java实现 选择排序是一种简单直观的排序算法,其基本原理如下:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。 阅读详情

相关推荐

使用JAVA进行冒泡排序,选择排序

目录 使用JAVA自带的数组工具类进行排序 冒泡排序 选择排序 使用JAVA自带的数组工具类进行排序 从小到大输出: //JAVA中自带的数据工具包 import java.util.Arrays; public class 排序 { public static void main(String[] args) { //静态齿初始化一个一维数组 int[] array = {1,2,77,34,5,999,7,8,399};

weixin_52008431的博客 1689

Java排序介绍(冒泡排序,简单选择排序)

冒泡排序与简单选择排序的介绍(简洁易懂)

m0_62565675的博客 1659

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy)

文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。

coffeeii的博客 5829

选择排序 介绍与java实现

排序是程序编码避不开的一个话题。 一组无规则有序数据,排序的方式有很多中,其中最笨的方法就是穷举,也就是全排列排序。n个数字的有n!种不同的排列方法,如果50个无规则数据进行全排列进行排序,及时一台高性能计算机,每秒计算1万亿 ( 10^12 ) 次,也需要超过 10^20 年。 那么选择排序又能快多少呢? 选择排序需要依次从剩余无规则数据组合中取出最大(小)的数值,放置到新的队列中的即为有序的数列了。计算次数要比全排列排序少得多。 50个数字排序,50^2 = 2500 ,对于一台高性能计算机而言,

Rosen's 328

YOLO26魔改:ICIP2026 SDTA|单深度转置注意力注入C2PSA,长程依赖与局部细节双增强,mAP提升显著

多尺度适配:SDTA的深度卷积与C2PSA的空间注意力结合,增强对多尺度目标的结构感知,改善遮挡与密集场景下的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 293

漫画安全HIDS、EDR、NDR、XDR

漫画安全HIDS、EDR、NDR、XDR

墨痕诉清风的博客 3447

选择排序介绍及Python、Java实现

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。   算法思路:   每一次从待排序的数据元素中选出最小的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。   算法描述:   ...

怀揣梦想 努力前行 170

Python爬虫实战:实时监控美国SEC官网文件更新,助你第一时间掌握市场动态

在资本市场中,信息就是财富。美国证券交易委员会(SEC)官网公开了大量公司披露文件,涵盖财报、招股说明书、内幕交易等重要信息。对投资者、分析师及法律合规人员来说,实时监控这些公开文件具有重要价值。

2201_76125261的博客 595

JAVA 选择排序算法(详细实现过程介绍)

场景: 对数组int []arr={ 101, 34, 119, 1},实现从小到大选择排序。 思路分析: 4个数,外层循环次数为3即:数组长度-1 第一轮循环 1、设定最小数的值和下标 先设定数组中的下标为0的元素为最小的数 int min = arr[0] 设定最小数的下标为0 int minIndex = 0 使用for循环,从下标为1的数开始,循环次数为数组的长度 3 i=1 min=101,minIndex = 0,arr[1]=34 min>arr[1],则设置min=arr[1],

Sundy_sc的专栏 659

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1047

别再写XPath改DOM了!用OpenClaw零代码搞定爬虫全流程(抓取+清洗+存储)

免费版的大模型调用次数有限制(每天100次),但企业版是无限的,还能私有化部署;大模型分析DOM结构有时候会慢1-2秒,但比起节省的时间,完全可以接受;自定义Skill的文档还不够完善,但社区很活跃,有问题在Discord里问,很快就能得到回复。但总的来说,OpenClaw真的改变了我写爬虫的方式——以前我是“代码的奴隶”,现在我是“需求的提出者”,把时间花在更有价值的业务逻辑上,而不是重复繁琐的DOM调试上。如果你也在被传统爬虫折磨,强烈建议你试试OpenClaw,相信我,用了就回不去了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1314

java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快速排序)介绍

java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快速排序)介绍

alanchanchn的专栏 7万+

RK3588开发笔记-spi扩展canfd芯片MCP2518FD调试笔记

在嵌入式系统开发中,CANFD(控制器局域网灵活数据速率)是一种广泛应用于汽车和工业自动化领域的通信协议。为了满足项目需求,我们在RK3588平台上通过SPI接口扩展了CANFD芯片MCP2518FD,之所以用spi进行canfd扩展,是为了解决原生RK3588原生can不够稳定的问题(发送扩展帧有几率编程标准帧,RK3568/3588均存在该问题)。通过本次调试工作,我们成功地在RK3588平台上扩展了CANFD芯片MCP2518FD,并实现了与CAN总线的稳定通信。

flypig has a dream! 4227

Java编程中冒泡,插入,选择排序的介绍及简单教程

2.在内层的循环中,比较的次数是数组的长度-1-j,因为每一轮比较结束后,最大值已经排在了尾端,无需再次比较,所以减去递增的j可以避免重复比较以增加效率。1.插入排序的循环次数也是n-1次,因为第一个元素可以视为已排序元素,所以在代码中,我们将第二个元素作为第一个要插入的元素。1.数组的长度是n,但实际上只用比较n-1次,因为比较n-1次后,最大和倒数第二大的元素已经确定,无需再比较。2.将未排序部分最小元素与当前位置元素(即索引为i的元素)交换。核心思想:将未排序的元素插入已排序的元素中正确的位置。

2501_92879304的博客 165

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA数据结构 08.排序算法(1) 排序算法的介绍和分类 算法的时间复杂度 冒泡排序 选择排序 插入排序 希尔排序

JAVA数据结构 08.排序算法(1) 1.排序算法的介绍和分类 排序:将一组数据,以指定的顺序进行排列的过程 排序的分类: 内部排序:将需要的所有数据加载到内存中进行排序**(8大排序算法)** 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 归并排序 基数排序 外部排序:数据量过大,无法全部加载到内存中,需要借助外存进行排序,先部分排序后合并 度量一个排序算法: 算法的时间复杂度 算法的空间复杂度 2. 八大排序算

NeverGiveUp 215

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java 选择排序法介绍和代码示例 selectionSort

选择排序是一种简单的排序算法,其思路为首先从未排序的序列中找到最小(大)的元素,然后将该元素插入到已排序的序列的末尾。依次重复该操作直到整个序列有序。* 选择排序

shengguimin的博客 159

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 泛型中的选择、冒泡排序算法及javabean的简单介绍、使用

1111

weixin_43275631的博客 454

Java 选择排序法 和 冒泡排序法

原 Java 选择排序法 ...

weixin_44137282的博客 269

Java数组选择排序法

开发工具与关键技术: MyEclipse Java 撰写时间:2020、12、4 排序,顾名思义就是根据自己的需求按照从大到小或从小到大等方式进行排序,排序因需求不同而排序的方式也千变万化,所以排序的方法也有很多种,比如上次说过的冒泡排序,还有这里说的选择排序,以及其他的排序方法等。 选择排序是算法排序中比较常见的一种数组排序方法,上次说过的冒泡排序,冒泡排序的方式是通过定位交换从大到小进行逐个依次交换来排序,他跟选择排序法是有一定的区别的。 首先我说一下选择排序的原理大概是:通过遍历数组中的元素,从中

weixin_44551879的博客 748

java实现选择排序

java实现选择排序

程序员阿龙的博客 1万+

排序算法--选择排序(Java实现)

Java编码实现选择排序算法

liulianglin的专栏 733

java 选择排序

java选择排序 一、基本思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…, 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,总共通

qq_36276592的博客 2769

Java 选择排序法

原理简介         选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序。 时间复杂度         选择排序的时间复杂度为 O(n^2)。         第一次需要检查n个元素,但随后检查的元素数依次为n - 1, n – 2, …, 2和1。平均每次检查的元素数为1/2 ...

阿飞的博客 4万+

经典排序算法之-----选择排序(Java实现)

选择排序思想: 思路: 1、从整个数据中挑选出最小的数据放在首位、然后再从剩下的数据中、挑选出最小的数据放在第二位。依次类推 2、首先挑选出整个未排序数据的最小值、放到第一位 3、然后、从第二个位置到最后一个数据中、挑选出最小的值。放在第二位i、依次类推 最关键部分的代码: for (int i = 0; i < len-1; i++) { minIndex=i;//每经过一次循环、下次循环都会减少比较的数据 //内部循环的主要目的是:找出每一轮中的

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 887

了解 Java 中的选择排序

排序算法是计算机科学中的基本概念,用于按特定顺序排列元素集合。这些算法采用输入数组或列表,并根据预先确定的比较规则重新排列其元素。它还使解决问题的简单方法。。

qq_28884137的博客 556
上一篇: 介绍java中的冒泡排序
下一篇: 介绍java中的插入排序
懒人刘
博客等级 码龄4年 541粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值