待排序元素规模较小时,宜选取哪种排序算法效率最高
当待排序元素规模较小时,通常选择以下几种简单高效的排序算法,因为它们在小规模数据下具有更低的常数开销和良好的局部性表现:
✅ 插入排序(Insertion Sort)
- 推荐理由:在数据量小、数据部分有序的情况下,插入排序非常高效。
- 时间复杂度:平均和最坏是 O ( n 2 ) O(n^2) O(n2),最好是 O ( n ) O(n) O(n)(当数据已基本有序)
- 空间复杂度: O ( 1 ) O(1) O(1)(原地排序)
- 适用场景:小于 20~50 个元素的小数据集合
✅ 希尔排序(Shell Sort)
- 推荐理由:是插入排序的改进版本,适合中等规模数据。
- 时间复杂度:最坏 O ( n 2 ) O(n^2) O(n2),平均在 O ( n 1.3 ) O(n^{1.3}) O(n1.3) 左右(与增量序列有关)
- 空间复杂度: O ( 1 ) O(1) O(1)
- 适用场景:几十到几百个元素,性能优于直接插入排序
✅ 冒泡排序(Bubble Sort)(不推荐但易实现)
- 推荐理由:教学/演示用,实际效率较低
- 时间复杂度: O ( n 2 ) O(n^2) O(n2)
- 空间复杂度: O ( 1 ) O(1) O(1)
- 适用场景:极小规模排序,或者仅用于学习演示目的
小结:
算法 | 小规模效率 | 代码复杂度 | 是否原地排序 | 典型使用范围 |
---|---|---|---|---|
插入排序 | ✅ 高 | 简单 | ✅ 是 | 小于 50 个元素 |
希尔排序 | ✅ 较高 | 中等 | ✅ 是 | 小于几百个元素 |
冒泡排序 | ❌ 较低 | 简单 | ✅ 是 | 教学/极小规模 |
实际应用中,像 快速排序 或 归并排序 等算法通常在数据量较大时才展现优势。而像 Java 的 Arrays.sort()
或 C++ 的 std::sort()
通常在内部会对小规模数据切换为插入排序以提高效率。
相关文章:
待排序元素规模较小时,宜选取哪种排序算法效率最高
当待排序元素规模较小时,通常选择以下几种简单高效的排序算法,因为它们在小规模数据下具有更低的常数开销和良好的局部性表现: ✅ 插入排序(Insertion Sort) 推荐理由:在数据量小、数据部分有序的情况下&a…...
SAQ评级是什么,SAQ评级的意义?对企业发展好处
SAQ评级(Supplier Audit Questionnaire,供应商审计问卷评级)是供应链管理中常见的一种评估机制,主要用于对供应商的质量、合规性、风险管理能力等进行标准化审核和分级。它常见于汽车、电子、医药等对供应链要求严格的行业&#x…...
嵌入式---电机分类
一、按电流类型分类(最基础分类) 1. 直流电机(DC Motor) 工作原理:通过换向器(有刷)或电子换向(无刷)将直流电源转换为交变磁场,驱动转子旋转。 核心特点&a…...
定制一款国密浏览器(5):修改浏览器名称
在上一章中,我介绍了如何修改浏览器的 logo,这一章介绍修改浏览器的名称。 浏览器的名称是 AI 帮我想的,英文名 Mojo Browser,中文名墨舟浏览器。 第一步先修改 desktop 文件,desktop 文件支持多语言化,遵循 Freedesktop.org 制定的 Desktop Entry Specification 规范。…...
水库大坝安全监测系统
水库大坝安全监测系统是现代水利管理中至关重要的组成部分,是一种用于实时监控和评估大坝结构安全状况的技术系统,通过多种技术手段实现对水库大坝的全方位、全天候监测,旨在确保大坝的稳定性和安全性,预防潜在风险。 系统构成 …...
文件IO5(JPEG图像原理与应用)
JPEG图像原理与应用 ⦁ 基本概念 JPEG(Joint Photographic Experts Group)指的是联合图像专家组,是国际标准化组织ISO制订并于1992年发布的一种面向连续色调静止图像的压缩编码标准,所以也被称为JPEG标准。 同样,JP…...
开源Cursor替代品——Void
我原先写过很多关于Cursor文章。 今天分享一个开源的 Cursor 替代方案。 如果你也热爱开源项目,那么这篇文章正是为你准备的! 寻找开源替代的原因 我一直在思考:市面上这类产品层出不穷,但真正的核心技术似乎都依赖于大语言模型(LLM)。于是萌生了一个想法——何不自己…...
DAOS系统架构-组件
如上图所示,一个完整的DAOS系统是由管理节点组件、客户端节点组件、服务端节点组件以及网络通信组件四个部分组成。管理节点组件通过管理网络通道(蓝色)对DAOS服务管理和监控。客户端节点组件通过数据网络通道(红色)与…...
论文精读:MSCA-Net:多尺度上下文聚合网络在红外小目标检测中的突破
论文地址:https://arxiv.org/pdf/2503.17193 目录 一、论文结构解析 二、三大创新点详解 1. 多尺度增强检测注意力(MSEDA) 2. 位置卷积块注意力模块(PCBAM) 3. 通道聚合模块(CAB) 三、实验结果对比 定量分析(表I关键数据) 定性对比 四、应用场景展望 五、总…...
LangGraph 使用指南
安装配置 安装依赖 LangGraph 可以通过 pip 安装: pip install langgraph如果您想使用最新的功能和改进,可以从源代码安装: pip install githttps://github.com/langchain-ai/langgraph.git环境配置 LangGraph 与 LangChain 共享许多配置…...
C++指针(四)万字图文详解!
个人主页:PingdiGuo_guo 收录专栏:C干货专栏 前言 相关文章:C指针(一)、C指针(二)、C指针(三) 本篇博客是介绍函数指针、函数指针数组、回调函数、指针函数的。 点赞破六…...
【AI提示词】长期主义助手提供规划支持
提示说明 长期主义是一种关注长期利益和持续学习的思维模式,帮助个人和组织在快速变化的环境中保持耐心和系统性思考。 提示词 # Role: Long-termist Assistant## Profile - language: 中文 - description: 长期主义是一种关注长期利益和持续学习的思维模式&…...
JavaScript逆向工程:如何判断对称加密与非对称加密
在现代Web应用安全分析中,加密算法的识别是JavaScript逆向工程的关键环节。本文将详细介绍如何在逆向工程中判断JavaScript代码使用的是对称加密还是非对称加密。 一、加密算法基础概念 1. 对称加密 (Symmetric Encryption) 特点:加密和解密使用相同的…...
制造企业如何通过实现数据统一?
随着生产规模的扩大、供应链的复杂化以及市场需求的快速变化,企业内部的数据管理问题日益凸显。数据孤岛、数据冗余、数据不一致等问题不仅降低了运营效率,还可能导致决策失误。那么,制造企业如何才能打破这些壁垒,实现数据的统一…...
ICRA-2025 | 视觉预测助力机器人自主导航!NavigateDiff:视觉引导的零样本导航助理
论文:Yiran Qin 1 , 2 ^{1,2} 1,2, Ao Sun 2 ^{2} 2, Yuze Hong 2 ^{2} 2, Benyou Wang 2 ^{2} 2, Ruimao Zhang 1 ^{1} 1单位: 1 ^{1} 1中山大学, 2 ^{2} 2香港中文大学深圳校区论文标题:NavigateDiff: Visual Predictors are Ze…...
Java 与 LibreOffice 集成开发指南
1. 引言 Java 与 LibreOffice 的集成开发为开发者提供了一种强大的工具,用于实现文档自动化处理、文档转换、内容编辑等任务。通过 Java 调用 LibreOffice 提供的 API,可以实现跨平台的文档处理功能,满足各种业务需求。本文将详细介绍如何使…...
如果单表数据量大,只能考虑分库分表吗
程序员最怕啥?不是需求改八遍,也不是半夜报警电话,而是数据库突然卡成PPT!尤其是当单表数据冲到几千万行,查询慢得像老牛拉车,这时候团队第一反应往往是:“赶紧分库分表!” 但兄弟,分库分表可不是什么温柔小姐姐,它更像是个浑身带刺的仙人掌——你以为抱上就能解决问…...
3.3.1 spdlog异步日志
文章目录 3.3.1 spdlog异步日志1. spdlog1. 日志作用2 .同步日志和异步日志区别 2. spdlog是什么下载命令:2. spdlog为什么高效3. spdlog特征5. spdlog输出控制6. 处理流程7. 文件io8.问题 2. 如何创建logger3. 如何创建sink4. 如何自定义格式化5. 如何创建异步日志…...
【Web功能测试】注册与登录功能测试用例设计深度解析
1 注册功能测试用例设计 1.1 明确需求与测试范围 必填字段:手机号、验证码、密码 手机号规则:11位手机号 密码规则:6-16位,需包含大小写字母必须同时存在,数字或符号存在其一 协议勾选 提交后跳转登录页或显示成功…...
netstat 查看端口占用、杀死进程
文章目录 查看端口占用强制杀死 报错信息使用 lsof 查看端口占用 netstat -tanlp强制杀死 在安全的情况下,用下面命令杀死端口占用的进程 sudo kill $(sudo lsof -t -i:3128)报错信息 部署程序时,会出现这样的报错: Error response from…...
Windows 11 PowerShell重定向文本文件的编码问题
目录 问题的由来 编码导致的问题 解决办法 VSCode进行转换 记事本进行转换 直接指定输出的文本编码 总结 问题的由来 在我的嵌入式系统的课程中有一个裸机开发的实验,其中需要把图片等文件转换为C语言数组保存在程序中。课程中,我推荐了CodePlea的…...
蓝桥杯冲刺:一维差分
系列文章目录 蓝桥杯系列:一维差分 文章目录 系列文章目录前言一、一维差分: 差分数组的意义: 二、差分的性质: 差分和前缀和的关系 三、一维差分代码实现:四、典型真题(利用一维差分来实现) 这…...
理解企业内部信息集成
目录 1. 技术平台集成 2. 数据集成 3. 应用集成 4. 业务过程集成 5. 应用集成与企业内部信息集成的区别 企业内部信息集成是将分散的技术、数据、应用和业务流程整合为一个协同的整体,以提高效率、减少冗余和增强决策能力。 企业内部信息集成一般可以分为4个方…...
论文学习:《利用图注意力网络增强单细胞多组学数据的整合》
原文标题:Enhanced Integration ofSingle-Cell Multi-Omics Data Using Graph Attention Networks 原文链接:https://pubs.acs.org/doi/abs/10.1021/acssynbio.4c00864 跨不同组学层的数据集成面临的挑战:高维度、异质性和稀疏性。 变分自编码…...
HumanDil-Ox-LDL:保存:2-8℃保存,避免强光直射,不可冻存
化学试剂的基本介绍: /// 英文名称:HumanDil-Oxidized LowDensityLipoprotein /// 中文名称:人源红色荧光标记氧化型低密度脂蛋白 /// 浓度:1.0-4.0 mg/ml /// 外观:乳状液体 /// 缓冲液组分:PBS&…...
基于3d相机的点云物体检测与路径规划
🧩 代码结构和解释: 点云预处理 (preprocess_point_cloud): 使用 Voxel 下采样 来减少点云数据量,去除不必要的噪声。 使用 统计滤波器 去除离群点,以提高后续拟合的精度。 V型焊缝路径拟合 (fit_weld_path_v)&…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)~んです & ~の(2)意味(いみ)&形(かたち)&使い方(つかいかた)(3)そうなんですか & そうなんだ。(4)何をしているんですか & 何を…...
yolov8在windows系统的C++版本的onnxruntime部署方法
1.各个软件的的环境需要保持在统一的版本。 onnxruntime需要和cuda的版本对应上,版本号:onnxruntime-win-x64-gpu-1.18.1 ,链接: NVIDIA - CUDA | onnxruntime cuda:本机显卡支持的版本,cuda11.7,链接:CUDA Toolkit Archive | NVIDIA Developer cudnn:需要对应到cud…...
AD软件的系统设置
设置 1.自动保存(DATA -> backup) 2.原理图-复制元器件递增位号 3.原理图-用斜线表示负信号 4.PCB-选择移动重叠的元器件 5.PCB-十字光标全屏大小 6.PCB-选择部分连接网络的走线全亮/显示多个网络的颜色(TP) 7.PCB-DRC报错的图…...
算法---子序列[动态规划解决](最长递增子序列)
最长递增子序列 说白了,要用到双层循环! 用双层循环中的dp[i] class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);for(int i 0;i<nums.size();i){for(int j0;j<i;j){if(nums[i]>num…...
快速幂(模板)
快速幂 取余运算性质:(a*b*c)%d (a%d * b%d * c%d)%d ; #include <iostream> using namespace std; int main() {long long b,p,k;//b(底数)p(指数)k(取模数)cin>>b>>p>>k;long long ret1;b%k;//防止底数过大//模版,记…...
蓝桥杯 好数【暴力、基础知识】
题目: AC代码: #include<bits/stdc.h> using namespace std; int ans0; int n; bool check(int x){int cnt1;while(x!0){int tx%10;if(cnt%21){ if(t%20) return false; //奇数位置是偶数} if(cnt%20){if(t%21) return false; //偶数位是奇数}cnt…...
【Kubernetes】Kubernetes中如何实现灰度发布
Kubernetes中实现灰度发布 一、基于Ingress-nginx的流量切分(适用中小规模) 权重分流 在Ingress资源中通过nginx.ingress.kubernetes.io/canary-weight注解设置新版本流量比例apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:ng…...
【Reinforcement Learning For Quadruped Control】1
强化学习(RL)是一种机器学习范式,代理通过与环境的互动来学习做出决策。强化学习的核心概念围绕以下几个方面展开:a) 代理agent,做出决策;b) 环境environment,响应代理的决策;c) 状态…...
工程企业如何实现四算联动?预算-核算-决算系统解析
在工程行业,项目管理的高效性直接决定了企业的盈利能力和市场竞争力。尤其是在EPC(工程总承包)模式下,工程企业面临着复杂的业务场景和多维度的成本管控需求。如何通过“四算联动”(概算、预算、核算、决算)…...
【SpringBoot】处理actuator风险漏洞
最近给系统做渗透测试,扫描出了一个actuator风险漏洞,属于高危级别,通过actuator接口可以拿到用户敏感信息。这个问题处理起来倒也简单,禁用actuator或者限制访问就可以了 # 禁用actuator接口配置 management:server:port: -1# 限…...
MACOS15版本安装 python mysqlclient 以连接mysql 8.0
MACOS14/15 版本安装 python mysqlclient 以连接mysql 8.0 主要用于macos django4 mysql8.0 开发项目 准备材料 macos > 13.0 python > 3.10.0 (不强制) mysql > 8.0 安装步骤 安装 brew 使用国内源安装brew /bin/zsh -c "$(curl -f…...
KV Cache大模型推理加速功能
KV Cache KV Cache是大模型标配的推理加速功能,也是推理过程中,显存资源巨大开销的元凶之一。在模型推理时,KV Cache在显存占用量可达30%以上。 目前大部分针对KV Cache的优化工作,主要集中在工程上。比如著名的VLLM,…...
Windows下安装WSL2下的Ubuntu、docker容器的IP地址(上)
既然容器支持多个应用,那么容易想到应该有对应的ip地址和端口,这样才能和Ubuntu主机进行通讯,ubuntu访问外网也应该有ip能连接到外网才行,要搞清楚这些ip地址的关系才行。 前面两篇文章中说了怎么实现windows和wsl2下的ubuntu的文…...
vue实现中英文切换
第一步:安装插件vue-i18n,npm install vue-i18n 第二步:在src下新建locales文件夹,并在locales下新建index.js、EN.js、CN.js文件 第三步:在EN.js和CN.js文件下配置你想要的字段,例如: //CN.js…...
探索 Vue 3 中 vue-router 的 router.resolve () API
一、router.resolve() 是什么 router.resolve() 就好比是一个精准的 “导航参谋”。当我们在 Vue 3 应用里需要明确某个路由地址对应的详细信息时,它就能派上用场。我们给它传入路由信息,像路径、参数等,它会解析出对应的路由对象࿰…...
Excel 插件推荐:提升Excel能力的效率神器!
一、Excel玩家的觉醒时刻 在财务部的深夜加班现场,李师傅的咖啡杯上凝结着第3圈水渍。眼前的Excel窗口堆叠如俄罗斯方块:重复值删除进度15%、VLOOKUP公式报错3处、合并单元格序号乱成毛线团…这场景是否也戳中了你的痛点? 每个Excel高手都经…...
leetcode_383. 赎金信_java
383. 赎金信https://leetcode.cn/problems/ransom-note/ 1、题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字…...
应用安全系列之四十五:日志伪造(Log_Forging)之三
1、简介 针对Java的日志系统有多种,本文主要描述如何通过修改配置文件来解决logback和log4j的日志伪造问题。 2、logback 2.1、系统提供的解决方案 在logback.xml中配置编码器自动转义特殊字符: 复制 <configuration><appender name"C…...
FTPClient开发遇到的坑
1. 生成文件夹乱序 这里用分隔符把路径划分开,意在一层一层创建目录 这里可能会出现乱序 正确的代码 先换一下分隔符 再一次生成所有路径 2.ftpClient 需要指定被动模式才能绕开端口限制 有些 服务器没有打开指定端口,上传文件会出现 425 Canno…...
leetcode0155. 最小栈-medium
1 题目:最小栈 官方标定难度:中 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删…...
操作系统 3.6-内存换出
换出算法总览 页面置换算法 FIFO(先进先出): 最简单的页面置换算法,淘汰最早进入内存的页面。 优点:实现简单。 缺点:可能会导致Belady异常,即增加内存反而降低性能。如果刚换入的页面马上又要…...
Python中的数值运算函数及math库详解
文章目录 Python中的数值运算函数及math库详解一、内置数值运算函数1. 基本数值运算函数2. 类型转换函数3. 进制转换函数 二、math库中的数学常数三、math库常用数学函数1. 数论与表示函数2. 幂函数与对数函数3. 三角函数4. 角度转换5. 双曲函数6. 特殊函数 四、实际应用示例1.…...
安卓开发提示Android Gradle plugin错误
The project is using an incompatible version (AGP 8.9.1) of the Android Gradle plugin. Latest supported version is AGP 8.8.0-alpha05 See Android Studio & AGP compatibility options. 改模块级 build.gradle(如果有独立配置):…...
《Uniapp-Vue 3-TS 实战开发》一键授权登录
在使用 UniApp 结合 Vue 3 和 TypeScript 开发时,实现一键授权登录功能通常涉及到调用微信小程序的授权接口(如 wx.getUserProfile 或 wx.login)来获取用户信息和登录凭证,然后将这些信息发送到后端进行验证和处理。以下是一个完整的实现示例,展示如何在 UniApp 中实现一键…...