选择排序思路分析及代码实现

排序算法——选择排序 目录 🐾基本介绍 🌞算法思想: 🌰实例: ⛅思路分析: 🌈总结: 🛴代码实现: 🛹算法性能分析 🍕时间复杂度 🍧空间复杂度 🍰稳定性 🐾基本介绍 选择排序(select sorting)也属于内部排序法,是从待排序的数据中,按指定的规则选出某一元素,再按照规定交换位置后达到排序的目的。 🌞算法思想: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,将元素存放在序列的起始位置(即与待排序列的第一个元素的位置进行交换)。然后再从剩余的未排序元素中寻找最小(或最大)的元素, 阅读详情

选择排序思路分析及代码实现

一、思路分析

n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
①初始状态:无序区为R[1…n],有序区为空。
②第1趟排序
在无序区R[1…n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1…1]和R[2…n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
③第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1…i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

解释

对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。
在这里插入图片描述

二、 代码实现

package com.sort;

import java.util.Arrays;

public class SelectSort {

	public static void main(String[] args) {
		int arr[] = { 101, 34, 119, 1 };
		System.out.println("排序前");
		System.out.println(Arrays.toString(arr));
		selectSort(arr);
		System.out.println("排序后");
		System.out.println(Arrays.toString(arr));
	}
	// 选择排序
	public static void selectSort(int[] arr) {
		// 使用for循环简化
		for (int i = 0; i < arr.length - 1; i++) {
			int minIndex = i;
			int min = arr[i];
			for (int j = i + 1; j < arr.length; j++) {
				if (min > arr[j]) {// 假定的最小值不是最小的
					min = arr[j];// 重置最小值
					minIndex = j;
				}
			}
			// 将最小值放在arr[0]的位置,交换
			// 优化
			if (minIndex != i) {
				arr[minIndex] = arr[i];
				arr[i] = min;
			}
		}
	}
}

挑战七大排序算法-03选择排序 选择排序算法的实现思路类似于插入排序,即已排序区间+未排序区间 1.算法定义 选择排序是基于选择的排序,即每次需要选择元素进行排序 2.算法思想 (1)第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置 (2)然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 (3)以此类推,直到全部待排序的数据元素的个数为零 来看看,选择排序原理... 阅读详情

相关推荐

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

在移动客户端安全通信中,设备级动态签名已成为主流App防范自动化攻击的核心手段。其原理是将设备指纹、运行时行为与可信硬件标识深度融合,生成不可复用、不可跨端、不可静态伪造的请求凭证。这类机制超越传统Token或Session鉴权,具备强上下文绑定性与实时熵值校验能力,广泛应用于电商、社交及开放平台等高风险接口场景。技术价值体现在有效识别模拟器、无头浏览器与集群化爬虫,同时保障多端一致性与合规数据对接。本文聚焦闲鱼客户端实际落地的x-sign(带设备上下文的混合签名)、x-mini-wua(小程序行为水印)与

weixin_35732273的博客 495

基础排序算法之选择排序法

一、选择排序法思路:先将最小(大)的元素取出,再在剩下的元素,再将其中最小(大)的取出,每次选择未处理的元素中最小(大)的元素,进行排序。 1、两种思路: ①开辟一个新的数组空间,将比较出来的最小(大)元素依次放入新数组中进行排序 ②进行原地排序,在源数组中进行元素的交换。 二、算法的实现 1、开辟空间排序算法实现: /** * 开辟空间异地排序 * 对一个数组的元素进行排序(从小到大输出),选择排序 ...

weixin_51373750的博客 2924

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

【算法】选择排序算法原理及实现

选择排序算法原理及实现

互联网小阿祥 464

AtmelStudio 7 ASF库学习笔记一:新建工程、配置时钟、下载程序和查看官方例程

由于需要学习一下atmel的atsaml 系列,使用AtmelStudio 7开发,之前主要用STM32,现在看到Atmel的库函数,其实是有些类相似的。 ASF3的库对应ST的标准库。ASF4对应ST的HAL库,Ateml Start对应STM32CubeMX。但在这里还是用ASF3来开发,因为Ateml Start还不支持我的这个芯片,而且和STM32的HAL库类似,ASF4为了好移植都是底...

yxy244的博客 8653

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

选择排序(c语言)

目录 一、什么是选择排序? 二、选择排序思路 三、排序过程 四、代码的实现 一、什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的中数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 二、选择排序思路 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置.

m0_59083833的博客 11万+

[EdgeAI] NXP eIQ 机器学习Toolkit (一):准备篇

eIQ™机器学习(ML)软件开发环境支持在恩智浦EdgeVerse™微控制器和微处理器(包括i.MX RT跨界MCU和i.MX系列应用处理器)上使用ML算法。eIQ ML软件包括称为eIQ Toolkit的ML工作流工具以及推理引擎、神经网络编译器和优化库。............

HowieXue 薛永浩的博客 1万+

选择排序算法思想

选择排序的基本思想是:如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换(说明一点,如果没有比原本在第0位置上的元素小的就不用交换了,后面的同样是),然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下的N-2个元素中找到最小的元素与第2位置上的元素交换,.......直到所有元素都排序好(也就是直到从剩下的2个元素中找到最小的元素与第N...

优快云 blog of twy 2万+

图神经网络实战(5)——常用图数据集

Cora 和 Facebook Page-Page 是图神经网络领域中经常使用的两个基准图数据集,通常用来比较不同模型的性能。在本节中,介绍了如何使用 PyTorch Geometric 库提供的数据集类加载 Cora 和 Facebook Page-Page 数据集,并探索了两个数据集的主要特征。

盼小辉丶的博客 1万+

VSCode + QMT 量化交易完整解决方案!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1326

数据结构与算法——选择排序

选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是:每次从未排序部分选出最小(或最大)的一个元素,放到已排序序列的末尾。该算法重复这一过程,直到所有元素都排序完成。

m0_65096391的博客 1340

SAP 销售订单BOM使用场景简介

通常在MTO的生产场景中,我们会根据已创建的SO去展开BOM去驱动生产,如果我们生产地产品BOM是通用性的通常我们用标准BOM的方式就可以实现,但是实际在生产过程中往往不会这样,不同的客户对某些物料的规格就不相同,就会涉及产生不同的BOM,但是该客户的产品又不存在通用性,这个时候就会引入概念就是销售订单BOM,先有销售订单然后根据销售订单+行项目创建BOM。销售BOM:根据销售订单号+行项目号创建的BOM,是根据特定的销售订单或者可以理解为特定的客户创建的BOM。

我小时候很黑的博客 4216

选择排序(java)思路分析及代码实现

选择排序思路分析 点击查看 选择排序核心代码: /** * @Title: selectSort * @Description: 先定最小值 * @param nums */ public static void selectSort(int nums[]) { for (int i = 0; i < nums.length - 1; i++) { int minIndex = i; int

299

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

022.选择排序算法思路分析和代码实现

<!-- TOC --> <ul> <li><a href="#1-%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F%E6%95%B4%E4%BD%93%E5%88%86%E

leon9dragon的博客 217

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java排序算法01:冒泡排序、选择排序、插入排序、思路分析、代码实现

文章目录排序算法. 排序算法时间复杂度1、冒泡排序法2、选择排序法 (不稳定)3、插入排序法 排序算法 排序是笔试最容易出现的题。 排序依照指定的规则进行排列的过程。 排序分为: 内部排序:在内存中进行排序 外部排序:由于数据过大,无法将所有数据放到内存中进行排序,需要借助外部存储进行排序 . 排序算法时间复杂度 1、冒泡排序法 交换排序法其中的一种 时间复杂度O(n2),需要排序的数量越大,排序时间越久。 public class BubbleSorting { public st

阿星小天地 155

Java实现冒泡、选择、插入简单排序及效率分析

1. 冒泡排序 上代码: package Sort.BubbleSort; import Sort.Display; public class BubbleSort { public static void main(String[] args) { long[] a={77, 99, 44, 55, 22, 88, 11, 0, 66, 33}; Di...

qq_41580831的博客 471

Re0:Java编程系列-2 经典简单排序的结构

Re0:Java编程系列-2 对经典排序的结构讲解,同时附带选择排序和插入排序的算法思考。

CphRed技术站 383

排序算法(一)选择排序

1.问题描述 从键盘上输入10个整数,用选择法将其由小到大的顺序排列并输出。 2.解题思路 1)先将10个数中的最小的数余 a[0]对换; 2)再将 a[1] 到 a[9]中最小的数与 a[1] 对换; 3)每比较一轮,找出一个未排序的数中最小的一个,共比较9轮。 3.图解  8 9 5 6 7 3 4 0 2 1   0 ...

Bee_Darker的博客 320

【排序算法】——选择排序

排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。

2302_80243065的博客 3308

选择排序法 php,php选择排序法实现数组排序实例分析

本文实例分析了php选择排序法实现数组排序的方法。分享给大家供大家参考。具体分析如下:选择排序法的基本思路:直接用案例来说明吧,比如有一个数组$arr = array(2,6,3,9),从大到小排序。第一次大循环:它首先假设$arr[0]为最大值,然后分别跟$arr[1]~$arr[3]进行比较,如果比较它大,则进行交换,过程是这样(2,6,3,9)---2和6比 --->(6,2,3,9)...

weixin_42134144的博客 169

数据结构学习(六)----------选择排序

选择排序 介绍 选择排序是一种简单的排序方法,他的基本思想是:第一次从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]进行交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列

weixin_46440359的博客 122

八大排序算法(java实现) 冒泡排序 快速排序 堆排序 归并排序 等

八大排序算法 一、直接插入 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 二、希尔排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 三、简单选择 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 四、堆排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 五、冒泡排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 六、快速排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 七..

Boush 2万+

几种常用的排序方法——选择排序

选择排序选择排序介绍性能分析选择排序实现思路运行结果原码 选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。 选择排序是不稳定的排序方法。 性能分析 时间复杂度 选择排序的交换操作介于 0 和 (n - 1)次之间。选择排序的比较操作为 n (n - 1) / 2

JiaMing11_27的博客 2467

十种排序算法总结(冒泡、插入、选择、希尔、归并、堆、快速,计数,桶,基数)[转]

十种排序算法总结(冒泡、插入、选择、希尔、归并、堆、快速,计数,桶,基数)[转]

ferris_chan 1805

【一起学数据结构与算法】几种常见的排序(插入排序、选择排序、交换排序、归并排序)

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。–(来源百度)将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。

摸鱼胖嘟嘟的博客 3795
上一篇: 冒泡排序的思路分析及代码实现
下一篇: 插入排序思路分析及代码实现
lu_long
博客等级 码龄8年 11粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值