选择排序的简单介绍

YOLO11实战:手把手教你优化钢材表面缺陷识别模型(基于NEU-DET数据集) 本文详细介绍了如何使用YOLO11优化钢材表面缺陷识别模型,基于NEU-DET数据集进行实战训练。从数据增强、模型架构优化到训练过程控制,全面解析提升钢材缺陷检测性能的关键技术,特别针对裂纹、划痕等典型缺陷提出针对性解决方案。 阅读详情

直接选择排序

基本思想:每⼀次从待排序的数据元素中选出最⼩(或最⼤)的⼀个元素,存放在序列的起始位置,直到全部待 排序的数据元素排完 。

代码逻辑:

public static void selectSort1(int [] array){
        long currentTime = System.currentTimeMillis();

        for(int i = 0;i<array.length;i++){
            //将当前的i记录为最小数值的下标
            int minIndex=i;
            for(int j=i+1;j<array.length;j++){
                //从i后面的一个数据记为j,将j和最小下标的数据进行比较
                //如果小于minindex的值就将j作为minindex,并再往后找有没有还小的值
                if(array[j]<array[minIndex]){
                    minIndex=j;
                }
            }
            //当所有的值都找完一遍后,此时的minindex是最小的值,将它与i进行交换
            int temp=array[i];
            array[i]=array[minIndex];
            array[minIndex]=temp;
        }

        long spendTime = System.currentTimeMillis()-currentTime;
        System.out.println("花费时间"+spendTime+"ms");
    }

 下面是对直接选择排序的改进,但时间复杂度没有改变.

改进:

原理:创建多个新的变量.right:最右边的值. left:最左边的值. maxindex:最大值的下标. minindex:最小值的下标.

以right和left作为一个区间.用一个参数i在这个区间里寻找最大值,最小值.找到后将最大值最小值交换到两边的right和left上, 随后将right和left进行加减缩小区间.

代码部分:

public static void selectSort2(int [] array){
        int right = array.length-1;
        int left = 0;

        while (right>left) {
            int maxIndex=left;
            int minIndex=left;
            for (int i = left+1; i <= right; i++) {

                //将整个区间遍历完,找到最大值最小值
                if(array[i]>array[maxIndex]){
                    maxIndex=i;
                }
                if(array[i]<array[minIndex])
                {
                    minIndex=i;
                }
            }

            //将最大值最小值交换到左右两边.
            swap(array,left,minIndex);
            //有一个特殊情况,当left的值就是最大值时.在进行上面的一次交换后,
            //maxIndex就已经不是最大值了变成minIndex的值了

            //当将上面操作完时,将min的值给max就是获取到了交换后的最大值的位置
            if(left==maxIndex){
                maxIndex=minIndex;
            }
            swap(array,right,maxIndex);
            right--;
            left++;
        }

    }

时间复杂度O(N^2),空间复杂度O(1), 是不稳定排序.

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案 共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX... 阅读详情

相关推荐

计算机组成原理课程设计_微程序控制的简单模型机设计

微程序控制的简单模型机设计 要求 基本要求 完成一个简单主机的设计,模型机应具备如下能力:在自行设计的指令集基础上,运行自行编写的简单用户程序,实现特定运算功能。 弹性要求 在此基础上,完成必要的扩展,实现模型机的功能扩展设计,包括:实现多种运算功能(指令集的扩充)、支持更为丰富的寻址方式、有更为完善的微程序设计等。 实验软件和硬件环境 QuartusII, FPGA计算机组...

sailist的记录站 3万+

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

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

m0_62565675的博客 1659

手把手教你用运放搭建方波三角波发生器(附Multisim仿真文件)

本文详细解析了使用运算放大器搭建方波和三角波发生器的核心原理与设计步骤。通过剖析迟滞比较器与积分器的联动机制,指导读者进行电路设计、元件选型,并借助Multisim仿真进行参数调优与波形优化。文章提供了从理论分析、虚拟仿真到实物焊接调试的完整实践指南,并附有仿真文件,帮助硬件爱好者与初学者深入掌握这一经典模拟电路设计。

weixin_29165725的博客 640

【OJ题集】简单选择排序简单介绍

简单选择排序算法步骤:(来源《数据结构(C语言版)》严蔚敏,李冬梅,吴伟民编著   第二版)1. 设待排序的记录存放在数组r[1……n]中。第一趟从r[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为r[l],交换r[1]和r[k]。2. 第二趟从r[2]开始,通过n-2次比较,从n-1个记录中选出关键字最小的记录,记为r[k],交换r[2]和r[k]。3. 依次类推,第i趟从r...

Smileyan's blog 1万+

FPGA实战:给你的UART串口通信加上Verilog奇偶校验位(Modelsim仿真验证)

本文详细介绍了如何在FPGA中实现UART串口通信的Verilog奇偶校验功能,包括发送端校验位生成和接收端校验检测的设计与实现。通过Modelsim仿真验证,确保数据传输的可靠性,适用于嵌入式系统和数字通信领域。

weixin_34216614的博客 341

告别绕线!用Altium Designer从零设计一个PCB平面变压器(附3D模型)

本文详细介绍了如何使用Altium Designer从零设计一个PCB平面变压器,包括磁芯选型、电气参数计算、PCB设计实战技巧以及3D验证与生产输出。通过将绕组直接集成到PCB层中,配合嵌入式磁芯,实现了小型化、高功率密度的电源设计,适用于中低电流、高频应用场景。附3D模型,帮助读者快速掌握这一创新设计流程。

weixin_33716154的博客 442

选择排序算法:简单选择排序、堆排序(介绍+图解+源码+性能)

解释部分是直接copy《王道数据结构》,专业的就是不一样,通俗易懂 快速排序 希尔排序 归并排序

weixin_42158742的博客 1852

IO Virtualization with Virtio.part 2 [十三]

通过对virtio_device_id 中的 device 和 vendor 的值进行比较,我们找到对应的 virtio 驱动,由于这里我们使用 i2c virtio 为例,所以调用 virtio_i2c_probe 进行 virtio i2c 设备的初始化。在和 virtio mmio 设备交互时我们会读取 VIRTIO_MMIO_DEVICE_ID 和 VIRTIO_MMIO_VENDOR_ID,并将其值写入 virtio_device_id 中,这个就会用作后面和 virtio 设备驱动的匹配参数。

cxjczy1990的博客 1212

介绍简单选择排序

.一:排序思想: 在无序的序列中找到较大的数或者较小的数,添加到有序的序列中,通过此方法来增加有序序列的长度。得到有序的序列。 1.比较n-1次,从n个数中找到最小数,与第1个元素做交换; 2.比较n-2次,从n-1个数中找到最小数,与第二个数交换; 3.n-1趟排序后,排序结束 二:代码示例 public class SimpleSelectionSort { public static void main(String[] args){ int[] a = {4

qq_40213824的博客 209

15、SQL Server查询优化与CPU负载管理

本文深入探讨了SQL Server查询优化与CPU负载管理的关键技术,包括强制连接类型的使用、键查找问题的解决、索引设计的最佳实践、高CPU负载的排查与优化,以及并行性的利弊与调整策略。通过优化查询逻辑、合理设计索引、监控与管理CPU资源,可以显著提升SQL Server的性能和稳定性。适用于数据库开发人员和DBA进行性能调优参考。

pz8901234的博客 80

13、超声断层乳腺图像融合算法:乳腺癌诊断新突破

本文介绍了一种新型超声断层乳腺图像融合算法,通过结合超声透射(UTTc、UTTα)和反射断层图像(URT),实现对乳腺组织的多参数自动可视化。该算法能有效区分良性与恶性肿瘤,具有高准确性、无辐射、低成本等优势,适用于大规模乳腺癌早期筛查。初步临床测试验证了其可行性,未来有望成为乳腺癌诊断的新标准。

9q8w7e6r5的博客 156

简单选择排序和堆排序算法介绍(附代码)

本文介绍了简单排序和堆排序的算法思想和代码实现

lhr056813的博客 796

FX5U PLC运动控制库安装(PLCopen Motion Control FB参考)

下面我们介绍三菱FX5U PLC的运动控制库PLCopen Motion Control FB的安装。

RXXW_Dor的博客 1529

几种简单排序(冒泡排序,插入排序,选择排序)算法介绍

可以通过 JDK 自带的 sort 方法来验证上述三个排序过程是否正确,思路就是随机生成大样本量的数组,通过三个排序的结果和 JDK 自带的 sort 排序的结果一致,即可证明算法实现上是正确的。如果数组本身是有序的,那么插入排序的过程不需要移动任何数字,但是时间复杂度是以最坏情况估计,所以插入排序的时间复杂度仍然是。范围上,找到最小值所在的位置,然后把最小值交换到 0 号位置;范围上,找到最小值所在的位置,然后把最小值交换到 1 号位置;范围上,找到最小值所在的位置,然后把最小值交换到 2 号位置;

Practitioner 989

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

简单的选择排序介绍及代码实现

简单的选择排序 属于选择排序 两两比较大小,找出极值(极大值或极小值)被放置在固定的位置,这个固定位置一般指的是某一端 结果分为升序和降序排列 降序 n个数从左至右,索引从0开始到n-1,两两依次比较,记录大值索引,此轮所有数比较完毕,将大数和索引0数交换,如果大数就是索引1,不交换。第二轮,从1开始比较,找到最大值,将它和索引1位置交换,如果它就在索引1位置则不交换。依次类推,每次左边都会固定...

weixin_44800452的博客 1063

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

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

选择排序简单介绍

1、选择排序原理 选择排序的工作原理:第一次找出未排序的数组元素中的最大或者最小的值,存放在数组中的第一个,这样数组中的第一个元素就排序完成,然后在剩下的元素中再次找出最大值或者最小值,放在数组的第二个位置。依次对后面未进行排序的数组元素采取相同的操作,直到所有元素排序完成。 用代码实现选择排序的例子:(以升序排序为例) void selectionSort(int arr[],int len) { //代表排序要进行的躺数 数组长度-1次 for (int i = 0; i < len

m0_61694515的博客 773

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数据结构之简单选择排序介绍与举例

11, 12, 22, 25, 64] (将22与25交换,此时22已在正确位置,实际上这一步可以省略交换操作,但为了保持算法的一致性,仍然进行交换)然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。给定数组 [64, 25, 12, 22, 11],进行简单选择排序。最终得到排序后的数组:[11, 12, 22, 25, 64]。[11, 25, 12, 22, 64] (将64与11交换)[11, 12, 25, 22, 64] (将25与12交换)

DKPT的博客 500

折半插入排序、冒泡排序、快速排序、简单选择排序、堆排序整理(介绍、原理、代码、时间复杂度)

在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。:首先在未排序序列中找到最小元素,存放到已排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。:首先将无序数组构建成一个大顶堆(或小顶堆),然后将堆顶元素(最大值或最小值)与堆尾互换,之后将剩余的元素重新调整为大顶堆(或小顶堆),以此类推,直至整个数组有序。:通过不断地遍历数组,比较相邻的两个元素,若顺序错误则交换它们的位置。

weixin_75276735的博客 2117

冒泡排序、选择排序、插入排序的简单介绍

该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

qq_63613566的博客 214

冒泡排序与选择排序的简单介绍与比较

冒泡排序 public static void sortCompare(){ int[] arr = {3,4,1,5,2}; /* * 要遍历的次数 * 第一轮:43521比四次 * 第二轮:45321比三次 * 第三轮:45321比两次 * 第四轮:54321比一次 */ for (int i = 0; i < arr.length-1; i++) { //依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数

qq_44644976的博客 482

内排序:冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、快速排序介绍及C语言实现

排序 (参考大话数据结构第9章,归并排序没有看,快速排序的优化部分没有看) 相关概念: 1.内排序与外排序:根据在排序过程中待排序的记录是否全部被放置在内存中分为内排序和外排序。本文讨论的7种排序算法都是内排序。 2.稳定性:能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。即:如,如果Ai==Aj,Ai原来在Aj位置前,排序后Ai仍然是在Aj位置前 冒泡排序: bubbleSort0:最基础版冒泡排序:j从前往后循环,j每循环一次只是将剩下数据中的.

weixin_37515325的博客 1016

希尔排序和选择排序及计数排序的简单介绍

在元素集合arr[i]--arr[n-1]中选择最大(小)的数据 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换 在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。当begin和maxi重叠时,mini位置的数据和begin位置的数据互换后要将mini的值给到maxi,在将maxi位置的数据和end位置的数据互换。然后遍历数组,将数据出现的次数放到temp数组。

努力学习C、C++、Linux等! 578

冒泡排序和选择排序的简单介绍

冒泡排序和选择排序的简单介绍

2401_86951691的博客 186

C语言---插入排序、希尔排序、冒泡排序、选择排序、快速排序简单介绍

本文主要介绍用C语言实现的一些排序方法,有插入排序、希尔排序、冒泡排序、选择排序和快速排序,文章中给出的例子都是按照升序排列的。

西岸贤 1650

简单排序算法选择器--C语言

简单排序算法选择器 由用户选择对该组数据进行排序的方法:直接插入排序、冒泡排序、快速排序、简单选择排序。并可以查看每趟排序的结果。 需要不同的排序方法函数 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<math.h> ...

weixin_42703039的博客 334

选择排序—简单选择排序

基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 #include &lt;stdio.h&gt; void print(int *iarry,int n,int i); int gnum=0; void simple...

lonely12a3a的博客 339
上一篇: 插入排序的简单介绍
下一篇: 堆排序的简单介绍
panzer_maus
博客等级 码龄3年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值