又哭又笑,这份面试宝典要是早遇到就好了
01、算法原理
选择排序(Selection sort)是一种简单直观的排序算法。
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
有无序列表
[3,44,38,5,47,115,36,26,27,2,46,4,19,50,48]
进行选择排序,步骤如下:
第一轮从第一个元素开始与下一个元素进行比较,记录较小的元素,再和下下个元素进行比较,记录较小的元素,进行 14 次比较后找到整个列表中的最小数 ls[min],将它与 ls[0] 交换位置。
第二轮第二个元素开始与下一个元素进行比较,记录较小的元素,再和下下个元素进行比较,记录较小的元素,进行 13 次比较后找到从第二个元素开始的列表中的最小数 ls[min],将它与 ls[1] 交换位置。
第三轮....
第十四轮第十四个元素开始与下一个元素进行比较,找到最后两个元素中的最小数将它与 ls[1] 交换位置,自此排序完成。
如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337
https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337
根据上面的步骤归纳总结:
n 个元素的列表,需要 n-1 轮选择排序。每轮选择排序需要的比较次数为 n-1-轮次
02、 代码实现
def selection_sort(l):n = len(l)for i in range(n - 1): # 进行n-1轮选择排序min_index = i # 预设最小值索引为未排序部分的第一个数for j in range(i + 1, n ):if l[min_index] > l[j]:min_index = j# 将最小元素放到每次排序的第一个位置l[i], l[min_index] = l[min_index], l[i]ls = [3, 44, 38, 5, 47, 115, 36, 26, 27, 2, 46, 4, 19, 50, 48]selection_sort(ls)
print(ls)
运行结果:
[2, 3, 4, 5, 19, 26, 27, 36, 38, 44, 46, 47, 48,50, 115 ]
03、分析总结
1. 时间复杂度
● 在选择排序中,其交换操作介于 0(已排序数组)到 n-1(逆序数组)之间,时间复杂度为 O(n)● 比较操作跟数组的初始状态无关,不论待排序数组是有序的还是逆序的,比较操作的次数都是 n-1+...+3+2+1=n*(n-1)/2,时间复杂度为 O(n2)
2. 空间复杂度
在选择排序算法过程中,临时占用存储空间大小不变,空间复杂度为 O(1)
3. 稳定性分析
序列 5,8,5,2,9 经过一遍选择后,第一个元素 5 回合 2 交换,那么原序列中两个 5 的相对前后顺序就破坏了,所以选择排序是一个不稳定的排序。
4.应用分析
交换操作所需 CPU 时间比比较所需的 CPU 时间多,当 n 值较小时,选择排序的交换操作远小于冒泡排序,此时应当使用选择排序。
相关文章:
又哭又笑,这份面试宝典要是早遇到就好了
01、算法原理 选择排序(Selection sort)是一种简单直观的排序算法。 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素&#…...
订单30分钟自动关闭的五种解决方案
1 前言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务 。那么这里就会产生一个问题,这…...
【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR
目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …...
【diffusion model】扩散模型入门
写在最前,参加DataWhale 10月组队学习。 参考资料: HuggingFace 开源diffusion-models-class 1.扩散模型介绍 2.调用模型生成一张赛博风格的猫咪图片 2.1 安装依赖包 %pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow9…...
[Spring]为什么Spring动态代理默认使用CGlib,而不是JDK代理?
文章目录 原因一:CGlib不需要接口原因二:CGlib效率高原因三:JDK代理会导致注解失效如果希望使用JDK代理扩展AOP in Spring Boot, is it a JDK dynamic proxy or a Cglib dynamic proxy?SpringSpringBoot 原因一:CGlib不需要接口 …...
最长上升子序列(二分)代码模板
用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…...
存储优化知识复习一详细版解析
存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…...
“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“
11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…...
微信小程序会议OA系统其他页面
前言: 及上一文章:https://blog.csdn.net/djssubddbj/article/details/133895170?spm1001.2014.3001.5501我们所写的会议OA的首页,在这个上面我们继续完成我们的会议OA系统,这是我们的本期所要完成的页面 自定义组件 微信小程序…...
LabVIEW中使用Get LV Class Default Value 出现错误1498
LabVIEW中使用Get LV Class Default Value 出现错误1498 在LabVIEW中开发了一个应用程序,其中包含可以在执行时动态配置插件的基类。生成可执行文件后,当应用程序要执行子类时,收到以下错误信息。 Error1498 occurred at Gen LV Class Defa…...
RabbitMQ中的核心概念和交换机类型
目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加消息。 消息体…...
HarmonyOS开发:Log工具类源码分析
前言 一转眼就十月中旬了,国庆的劲真大,到现在还未缓过来,以至于要更新的文章迟迟未发布,大家可以看到,最近一段时间的文章,都是关于HarmonyOS相关的,两个原因吧,一是我司有这样的任…...
FFmpeg和rtsp服务器搭建视频直播流服务
下面使用的是ubuntu的,window系统可以参考: 通过rtsp-simple-server和ffmpeg实现录屏并发布视频直播_rtsp simple server_病毒宇宇的博客-CSDN博客 一、安装rtsp-simple-server (1)下载rtsp-simple-server 下载地址:R…...
数据图册页面(左边一列图片缩略图,右边展示图片大图)
最近要写这么一个页面,左侧一列图片缩略图,点击左侧缩略图后有选中效果,然后右侧展示图片原图,还能够左右翻页查看。 最后写了一个demo出来,demo还不是很完善,需要自己修改,后面我也给出了修改建…...
leetcode:105从前序与中序遍历序列构造二叉树
105:从前序与中序遍历序列构造二叉树 啊,好久都没有更新算法题目了。曾今是C,如今是Java,感慨啊。 像树这样的算法题,基本都逃不开递归。递归的思想是:将大任务拆分为小任务。我们不妨构建一个函数&#…...
H5前端开发——DOM
H5前端开发——DOM 在H5前端开发中,DOM(Document Object Model)是一个非常核心的概念,指的是文档对象模型。简单来说,DOM是浏览器将HTML文档转换为一棵树形结构的方式,这样我们可以通过JavaScript脚本语言来操作和修改HTML文档。 DOM模型由节点组成,节点包括元素(ELEM…...
专访 Web3Go 新产品 Reiki:培育 AI 原生数字资产与创意新土壤
从 DeFi 到 NFTFi、SocialFi,web3 从业者在尝试 crypto 与区块链技术能为我们的生活、创作、娱乐和文化带来何种新体验,而生成式人工智能的突破性发展则为我们与链上世界的交互、社区内容创作等带来了新的体验,改变互动、交易和价值创造方式。…...
Docker仓库harbor私服搭建
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FT…...
【LangChain系列 11】Prompt模版——拼装组合
原文地址:【LangChain系列 11】Prompt模版——拼装组合 本文速读: 多prompt模版组合 单prompt模版拼装 在平常业务开发中,我们常常需要把一些公共模块提取出来作为一个独立的部分,然后将业务中去将这些模块进行组合。在LLM应用…...
JVM三色标记
三色标记 什么是三色标记法 三色标记法,也被称为Tri-color Marking Algorithm,是一种用于追踪对象存活状态的垃圾回收算法。它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法的基础上进行了改进。 与两色标记法只能将对象标记为“…...
国民技术 N32G031K8L7 LQFP-32 单片机
内核CPU 32位ARM Cortex-M0 内核,单周期硬件乘法指令 最高主频48MHz 加密存储器 - 高达64KByte片内Flash,支持加密存储,支持硬件ECC校验,10万次擦写次数,10年数据保持 一8KByte片内SRAM,支持硬件奇偶校验 低…...
Python实现图形化井字棋——人机对战
井字棋,英文名叫TicQ-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记&…...
Kali Linux实战:用SET工具包5分钟克隆一个钓鱼网站(附谷歌浏览器登录凭证捕获演示)
Kali Linux实战:5分钟构建钓鱼网站与凭证捕获全流程 在网络安全领域,渗透测试工具的应用能力直接决定了安全防护的有效性。Social Engineer Toolkit(SET)作为Kali Linux中的明星工具包,以其高度集成化和易用性著称&am…...
ESP32+LVGL8.1实战:用陀螺仪模拟编码器输入(附完整代码)
ESP32LVGL8.1实战:用陀螺仪模拟编码器输入(附完整代码) 在嵌入式界面开发中,输入控制方式往往决定了用户体验的流畅度。传统编码器虽然可靠,但体积和成本限制了其在小型设备中的应用。本文将展示如何利用ESP32内置的加…...
矿山智慧巡检一体化平台
矿山智慧巡检一体化平台概述矿山智慧巡检一体化平台是通过物联网、人工智能、大数据等技术,将传统人工巡检升级为智能化、自动化、数字化的综合管理系统。该平台整合设备监控、环境监测、人员定位、数据分析等功能,实现矿山安全高效运行。核心功能实时监…...
ANDROID 黑科技 : 保活机制深度逆向
在 Android 逆向与安全防护的博弈中,进程保活(Keep-Alive)始终是一个充满争议且技术密集的话题。随着 Android 系统的迭代,从早期的 1 像素 Activity、JobScheduler,到后来的各种同步账号机制,系统对后台进…...
别再问‘1+1为什么等于2’了!聊聊哥德巴赫猜想在密码学和区块链里的那些事儿
哥德巴赫猜想背后的技术革命:素数如何重塑现代加密体系 数学史上的明珠哥德巴赫猜想,远不止是"112"的简单命题。当技术决策者们在评估RSA-4096密钥强度时,当区块链开发者选择椭圆曲线参数时,他们实际上正在延续1742年那…...
**发散创新:基于Go语言的故障演练自动化框架设计与实战**在现代分布式系统中,**高可用性**
a发散创新:基于Go语言的故障演练自动化框架设计与实战 在现代分布式系统中,高可用性和容错能力已成为衡量服务稳定性的核心指标。传统的测试手段往往无法模拟真实环境下的异常场景,导致线上故障频发。为此,我们引入了一套轻量级、…...
避开ESP32看门狗的坑:从Ticker定时器触发重启,到理解IDLE任务与CPU核心分配
ESP32看门狗深度解析:从Ticker陷阱到双核任务调度优化 当你在ESP32项目中使用Ticker库实现毫秒级定时器时,是否遇到过即使主循环执行得飞快,系统依然莫名其妙触发看门狗重启的情况?这种看似违反直觉的现象背后,隐藏着F…...
Qwen3-ASR-1.7B应用案例:法律庭审录音转文字+关键语句高亮提取
Qwen3-ASR-1.7B应用案例:法律庭审录音转文字关键语句高亮提取 想象一下,一位律师或书记员需要从长达数小时的庭审录音中,快速找到“被告当庭承认”、“关键证据质证”或“法官最终裁定”等核心片段。传统方法需要人工反复听录音、做标记&…...
