常见排序算法之选择排序简谈

经典选择排序的分析、实现、测试 经典选择排序的分析、实现、优化、测试 1.选择排序过程分析 int arr[] = {3,9,-1,-10,-2}; 假设对arr这个数组进行排序: 第一轮: 用3和3后面的所有元素挨个比较,如果有比3小的,下一次比较就用这个较小的比较,例如:3与-1比较时-1比3小,那么下一次与-10的比较就用-1而不是3,最后找出最小的即-10,3和-10交换位置。 {-10,9,-1,3,-2} 结论: 每一轮比较,会找到数组中最小的元素。 … 结论: 排序思路比较好理解,代码写起来就不那么容易了,需要设置临时变 阅读详情

选择排序(Selection-sort) 是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

算法描述

n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:
1. 初始状态:无序区为R[1…n],有序区为空;
2. 第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1…i]和R[i+1…n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
3. n-1趟结束,数组有序化了。

代码实现

 /**
     * 选择排序
     * @param array
     * @return
     */
    public static int[] selectionSort(int[] array) {
        if (array.length == 0)
            return array;
        for (int i = 0; i < array.length; i++) {
            int minIndex = i;
            for (int j = i; j < array.length; j++) {
                if (array[j] < array[minIndex]) //找到最小的数
                    minIndex = j; //将最小数的索引保存
            }
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
        return array;
    }
【排序算法】选择排序 选择排序 文章目录选择排序@[toc]思路具体实现算法性能分析时间复杂度稳定性参考实现优化参考文献 思路 遍历整个数组,找到最小的元素,与数组第一个元素交换,再找到第二小的元素,与数组第二个元素交换,以此类推,直到数组全部排序。 具体实现 算法性能分析 时间复杂度 选择排序的交换操作介于 0 和 (n - 1) 次之间。 选择排序的比较操作为 n (n - 1) / 2 次之间。 选择排序的赋值操作介于 0 和 3 (n - 1) 次之间。 比较次数O(n^2),比较次数与关键字的初始状态无关,总 阅读详情

相关推荐

独立路径计算-独立路径计算.c

独立路径计算

选择排序算法流程图_课程规划案例:基于计算思维童化过程的选择排序算法学习路径...

这篇文章详细展示了选择排序这个核心概念的课程规划,目的是想让家长朋友们比较直观的了解:我们围绕计算思维和核心编程知识的课程规划是长期的、逐步渗透的、螺旋式上升的,也充分考量了儿童认知特点。对同一个核心的知识点或者同一个重要的计算思维方法,在给儿童教学和渗透时不能像对中学生或成人那样直接讲解概念并应用,必须在不同场景下,伴随着相关知识点的学习以不同的形式逐步展开,并适时总结归纳。当前我们采...

weixin_39734987的博客 494

MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据

FLIRT(FMRIB 的线性图像配准工具)是用于线性(仿射)模态内和模态间脑图像配准的全自动稳健且准确的工具。 什么是配准 在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够 因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图 对齐这些解剖结构的过程就叫做配准(register) 因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个

Tina姐的博客 1万+

Python选择排序的原理和实现

""" 选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置, 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们 当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素 的排序方法中,选择排序属于非常好的.

caoxinjian423的博客 345

U-net复现pytorch版本 以及制作自己的数据集并训练

GitHub链接: https://github.com/milesial/Pytorch-UNet 论文链接:

candice5566的博客 3万+

基于FPGA的cy7c68013a双向通信实验

基于FPGA的cy7c68013a双向通信实验     本实验是基于FPGA的cy7c68013a的USB双向通信实验,以前折腾过一段时间cy7c68013a,没有入门时感觉好难,入门了就会感觉很简单。本教程主要内容:     1.cy7c68013a的固件编写,以及生成iic固件和下载固件。     2.cy7c68013a的slave模式,以及他的读写时序     3.cy7c6801...

乘风的博客 3万+

十种常见排序算法

0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 0.2 算法复杂度 0.3 相关概念 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 .

liyongchunscr的博客 1万+

保姆级教程:用Kvaser DB Editor从零创建你的第一个DBC文件(附CAN信号属性详解)

本文提供了一份详细的Kvaser DB Editor教程,指导用户从零开始创建DBC文件,并深入解析CAN信号属性的关键设置。通过步骤清晰的安装指南、信号属性配置详解和实用技巧,帮助工程师和学生快速掌握CAN总线通信的核心工具,提升工作效率。

weixin_27076351的博客 247

常见的七种排序算法

目录 1.排序算法的概念及其运用 1.1 排序的概念 1.2 排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 插入排序 2.1.1直接插入排序 2.1.2 希尔排序(缩小增量排序) 2.2 选择排序 2.2.1 直接选择排序 2.2.2 堆排序 2.3 交换排序 2.3.1 冒泡排序 2.3.2 快速排序 2.4 归并排序 3.排序算法复杂度及稳定性分析 1.排序算法的概念及其运用 1.1 排序...

m0_58367586的博客 3312

CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南

本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。

weixin_42530458的博客 587

YOLOv11改进 | 添加注意力篇 | 结合2024最新Mamba注意力机制MLLA助力yolov11有效涨点含二次创新C2PSA(全网独家首发改进)

本文给大家带来的改进机制是结合号称超越Transformer架构的Mamba架构的最新注意力机制MLLA,本文将其和我们YOLOv11进行结合,的原理是通过将Mamba模型的一些核心设计融入线性注意力机制,从而提升模型的性能。具体来说,MLLA主要整合了Mamba中的“忘记门”(forget gate)和模块设计(block design)这两个关键因素,同时MLLA通过使用位置编码(RoPE)来替代忘记门,从而在保持并行计算和快速推理速度的同时,提供必要的位置信息。

Snu77的博客 3869

C++常见排序算法——选择排序算法

首先说一下选择排序的基本算法思想: 如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换,然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下的N-2个元素中找到最小的元素与第2位置上的元素交换,.......直到所有元素都排序好。 以从小到大排序为例:a[5]={3,5,4,1,0}; 选择出5个元素中最小的0,与a[0],也就是3进行交换,交换后的序列变为{0,5,4,1,3}; 选择出后面4个元素中最小的1,与a[1],也就是5进行交换

lengxuan001的博客 6625

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2386

常见排序算法之选择排序——直接选择排序、堆排序

哈喽大家好,我是保护小周ღ,本期为大家带来的是常见排序算法中的选择排序,主要有直接选择排序以及——堆排序(有点难理解),包您一看就会,快来试试吧~ ​

保护小周ღ的博客 2341

ROS机器人里程计模型

3.5 移动机器人系统模型 相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Are you ready? 没准备好也开始了。 3.5.1 常用坐标系系统模型 在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为机器人坐标系XR YR OR 、传感器坐标系XS YS OS

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

常见的排序算法

说起排序大家想必一定不陌生了,在生活中排序可是无处不在: 就比如你想在想买手机:你想以手机的价格为主,我们想看一看最贵的手机: 那么我们就可以以价格来作为排序,先看最贵的,再看最便宜的,比如: 我们可以看到有很多方式来供我们选择; 如果我们先要看看大学排名也是可以的: 当然,这些数据量都是很大的,为了能够让程序更快的做出反应,提供给用户更好的体验,那么高效、快速、稳定的排序算法是必不可少的! 下面我们来介绍一下几种比较常见的排序! 当然有的学校可能还会学:桶排序、基数排序等排序算法(比如我的学校😊😊

南猿北者博客 1218

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

常见排序算法

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持 不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳 定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2301_80501383的博客 2029

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java常见排序算法-选择排序

选择排序(Selection Sort)是一种简单的排序算法,在要排序的一组数中,选出最小的数和第一个数交互位置,剩下的中再挑最小的放第二位,以此类推。其基本思想是在待排序序列中选择最小(或最大)的元素,将其与序列的第一个元素交换位置,然后在剩余的元素中继续选择最小(或最大)的元素,将其与序列的第二个元素交换位置,以此类推,直到整个序列有序为止。选择排序的具体实现过程如下:遍历待排序序列,找到其中最小的元素,并记录其下标。将最小的元素与序列的第一个元素交换位置。

super_mochi1 2181

选择排序算法

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。   选择排序就是从当前未排序的整数中找一个最小的整数,将它放在已排序的整数列表的最后。   要点: 比较相邻的两个数,如果左边的数大于右边的数,就进行交换。   例如: 将数组 { 4,2,8,0

大彤小忆的博客 9073

常见排序算法详解

排序是我们在日常生活和工作中常见的一种操作。在计算机科学中,排序算法就是将一串或一组数据按照特定的顺序进行排列的算法。这些顺序可能是数字的升序或降序,也可能是字母或字词的字母顺序等。我们将探讨几种不同的排序算法,包括他们的原理、优缺点以及代码实现。常见的排序算法包括:冒泡排序、快速排序、插入排序、选择排序、希尔排序、归并排序、堆排序、基数排序等。这些排序算法中,有些是比较排序,即通过比较元素之间的关系进行排序;

沐雨风栉 874

【算法】八种常见排序算法-总结

插入排序通过构建有序序列,对未排序的元素逐个进行插入的方式排序。它从第二个元素开始,将其与已排序序列进行比较并插入到正确的位置,直到所有元素都被插入为止。插入排序是一种稳定的排序算法,适用于小规模数据或部分有序的数据。冒泡排序通过相邻元素的比较和交换,将最大的元素逐渐冒泡到最后的位置。它从列表的第一个元素开始,依次比较相邻的元素并交换位置,直到整个列表排序完成。冒泡排序是一种简单但效率较低的排序算法,适用于小规模数据或基本有序的数据。

分享Java硬核干货 1万+

常见排序算法——冒泡排序和选择排序

选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。

java小豪的博客 5411
上一篇: 常见排序算法之冒泡排序简谈
下一篇: 常见排序算法之快速排序简谈
hjdudu
博客等级 码龄10年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值