当前位置: 首页 > news >正文

常见的排序算法及分类对比

虽然在竞赛和编程语言中用到的排序算法主要是时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的高效算法,但作为算法学习,我们要从简单到复杂,认识常见的排序算法,并理解其算法思想。本文列出几乎所有的排序算法并进行分类对比。

排序算法总表

以下是一个对比表格,涵盖几乎所有常用的排序算法:

名称算法思想平均时间
复杂度
最优时间
复杂度
最坏时间
复杂度
空间
复杂度
稳定排序内排序原地排序比较排序备注
冒泡排序相邻交换,逐步冒泡 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)可优化(如鸡尾酒排序),不适合大数据。
选择排序每次选择最小/最大元素 O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)简单实现,适合小规模数据。
插入排序构建局部有序序列 ( 像抓牌 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)基于简单插入的排序,针对字符串可以折半插入。
希尔排序
Shell Sort
改进插入分组和逐步缩小间隔 O ( n 1.5 ) O(n^{1.5)} O(n1.5) O ( n log ⁡ n ) O(n \log n) O(nlogn) O

相关文章:

常见的排序算法及分类对比

虽然在竞赛和编程语言中用到的排序算法主要是时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的高效算法,但作为算法学习,我们要从简单到复杂,认识常见的排序算法,并理解其算法思想。本文列出几乎所有的排序算法并进行分类对比。 排序算法总表 以下是一个对比表格…...

多窗口切换——selenium

获取窗口句柄(以Python Selenium为例) current_window_handle方法 用于获取当前窗口的句柄。句柄是一个标识符,用于唯一标识一个窗口。示例代码: from selenium import webdriverdriver webdriver.Chrome() driver.get("…...

LFD STM32编程规范20241111

1. 源文件和头文件放同一目录bsp文件夹顺序文件注释防重复设置#include#defineenum类型声明、定义 包括struct union typedef全局变量声明文件级变量声明全局或文件级函数声明函数实现。按函数声明顺序文件尾注释。/**************END FILE**************/引用头文件不用绝对路…...

Python学习------第八天

函数 函数的传入参数 掌握函数返回值的作用 掌握函数返回值的定义语法 函数的嵌套调用: 函数的局部变量和全局变量 局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。 money 5000000 n…...

【扩散——BFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int t 2020, off 2020; #define x first #define y second typedef pair<int, int> PII; int dx[] {0, 0, 1, -1}, dy[] {-1, 1, 0, 0}; int dist[6080][6080]; // 0映射到2020&#xff0c;2020…...

C++ 编程基础(5)类与对象 | 5.5、多态

文章目录 一、多态1、概念2、多态实现方式3、动态绑定与静态绑定4、虚函数4.1、声明与定义4.2、虚函数的工作原理4.3、虚函数的优点与注意事项 5、不能声明为虚函数的函数6、纯虚函数7、抽象类8、总结 前言&#xff1a; 在C编程语言中&#xff0c;多态性&#xff08;Polymorphi…...

客户端发送http请求进行流量控制

客户端发送http请求进行流量控制 实现方式 1&#xff1a;使用 Semaphore (信号量) 控制流量 asyncio.Semaphore 是一种简单的流控方法&#xff0c;可以用来限制并发请求数量。 import asyncio import aiohttp import timeclass HttpClientWithSemaphore:def __init__(self, …...

STM32 低功耗模式详解

目录 一、什么是低功耗 二、低功耗的核心思想 三、STM32的3种低功耗模式 1、睡眠模式 (Sleep Mode) 2、停止模式 (Stop Mode) 3、 待机模式 (Standby Mode) 四、相关电源管理寄存器 1、PWR_CR (Power Control Register, 电源控制寄存器) 2、PWR_CSR (Power Control/St…...

我的第一个PyQt5程序

PyQt5的开发环境配置完成之后&#xff0c;开始编写第一个PyQt5的程序。 方法一&#xff1a;使用将.ui转换成.py文件的方法 import sys from FirstPyQt import Ui_MainWindow from PyQt5.QtWidgets import *#QtCore,QtGui,QtWidgets # from QtTest import Ui_MainWindow#导入Q…...

Unity调用Python

代码如下&#xff1a; if (useAI){/** 通过PaddlePaddle进行合成处理* */// 创建线程参数对象ThreadParameters parameters new ThreadParameters(){pythonPath "python", // 如果 Python 在系统路径中&#xff0c;可以直接使用 "python"pythonScript U…...

前端,location.reload刷新页面

location.reload() 是 JavaScript 中的一个方法&#xff0c;它用于重新加载当前页面。当你调用这个方法时&#xff0c;浏览器会重新加载当前页面的资源&#xff0c;就像用户点击了浏览器的刷新按钮一样。 基本用法 // 刷新当前页面 location.reload();带参数的用法 location…...

5G的发展演进

5G发展的驱动力 什么是5G [远程会议&#xff0c;2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下&#xff0c;ITU-R WP 5D#35e远程会议宣布3GPP 5G技术&#xff08;含NB-IoT&#xff09;满足IMT-2020 5G技…...

数据库参数备份

MySQL #!/bin/bash # 获取当前日期和时间的时间戳 TIMESTAMP$(date "%Y%m%d-%H%M%S")# 0、创建目录 mkdir /tmp/parameter_$TIMESTAMP/# 1、获取所有命名空间 echo "1、获取所有命名空间" NAMESPACES$(kubectl get ns | grep qfusion- | grep -v qfusion-…...

PG数据库 数据库时间字段 开始时间和结束时间,判断和查询条件的开始和截止时间存在交集,SQL如何编写

PG 数据库时间字段 开始时间和结束时间&#xff0c;判断和查询条件的开始和截止时间存在交集&#xff0c;SQL如何编写&#xff1f; 在 PostgreSQL 中&#xff0c;如果你想要查询那些时间段&#xff08;由 开始时间 和 结束时间 定义&#xff09;与给定的时间段有交集的记录&am…...

k8s服务内容滚动升级以及常用命令介绍

查看K8S集群所有的节点信息 kubectl get nodes 删除K8S集群中某个特定节点 kubectl delete nodes/10.0.0.123 获取K8S集群命名空间 kubectl get namespace 获取K8S所有命名空间的那些部署 kubectl get deployment --all-namespaces 创建命名空间 web界面上看到的效果,但是…...

机器学习: LightGBM模型(优化版)——高效且强大的树形模型

LightGBM&#xff08;Light Gradient Boosting Machine&#xff09;是一种基于梯度提升决策树&#xff08;GBDT&#xff09;的框架&#xff0c;由微软提出。它具有高效的训练速度、低内存占用、支持并行和GPU加速等特点&#xff0c;非常适合大规模数据的训练任务&#xff0c;尤…...

Wordpress常用配置,包括看板娘跨域等

一个Wordpress的博客已经搭建完成了&#xff0c;那么为了让它看起来更有人间烟火气一点&#xff0c;有一些常用的初始配置&#xff0c;这里整理一下。 修改页脚 页脚这里默认会显示Powered by Wordpress&#xff0c;还有一个原因是这里要加上备案信息。在主题里找到页脚&…...

Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式

此去经年&#xff0c;再难同游 —— 24.11.11 一、什么是设计模式 设计模式是一种编程套路&#xff0c;可以极大的方便程序的开发最常见、最经典的设计模式&#xff0c;就是我们所学习的面向对象了。 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模…...

Unity 网格模型及优化

一个模型中可以包含很多网格&#xff0c;一个模型可以由多个网格组成。在Unity3D中一个网格可以由多个子网格&#xff08;Sub-Mesh)组成。 在渲染引擎的时候&#xff0c;每个子网格都要匹配一个材质球来做渲染&#xff0c;实际上一个子网格本身就是一个个普通的模型&#xff0…...

离线 快速搭建 docker docker-compose k8s 环境

所需资源 sealos_5.0.1_linux_arm64.tar.gzkubernetes.tar等docker-compose-linux-aarch64 离线安装sealos&#xff0c;用于安装k8sdocker 首先安装sealos工具 tar zxvf sealos_5.0.1_linux_arm64.tar.gz sealos && chmod x sealos && mv sealos /usr/bin*…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》004、DEIM数学基础:注意力机制与特征重标定的统一框架

CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略 004、DEIM数学基础:注意力机制与特征重标定的统一框架 一、从一次诡异的梯度爆炸说起 去年秋天调一个轻量级检测模型,在T4上跑得好好的,换到Jetson Orin上就炸了——loss直接飞到NaN。查了三天,最后定…...

从Ring Bus到Mesh:聊聊Intel CPU内部那些‘堵车’与‘修路’的往事

从Ring Bus到Mesh&#xff1a;Intel CPU内部通信架构的演进与工程智慧 1. 当CPU内部变成"早高峰的北京三环" 2006年&#xff0c;Intel工程师们围在白板前&#xff0c;盯着密密麻麻的电路图皱起了眉头。他们刚刚完成测试的八核处理器原型机显示&#xff1a;当所有核心…...

Matlab求解微分代数方程:从核心概念到工程实践

1. 项目概述&#xff1a;从“混合系统”到“微分代数方程”在工程仿真、电路设计、多体动力学这些领域里摸爬滚打久了&#xff0c;你一定会遇到一类让人又爱又恨的模型。它们看起来像是一组微分方程&#xff0c;描述了系统状态随时间的变化&#xff0c;但同时又夹杂着一堆代数约…...

告别JNI内存泄漏:实战中那些容易踩坑的字符串与数组操作(附完整代码示例)

告别JNI内存泄漏&#xff1a;实战中那些容易踩坑的字符串与数组操作&#xff08;附完整代码示例&#xff09; 在Android NDK开发和高性能Java服务中&#xff0c;JNI&#xff08;Java Native Interface&#xff09;作为连接Java与C的桥梁&#xff0c;其重要性不言而喻。然而&…...

AArch64虚拟内存系统架构与硬件自动更新机制详解

1. AArch64虚拟内存系统架构概述AArch64是ARMv8及ARMv9架构的64位执行状态&#xff0c;其虚拟内存系统架构&#xff08;Virtual Memory System Architecture&#xff09;是现代ARM处理器的核心组成部分。这套系统通过多级页表机制实现虚拟地址到物理地址的转换&#xff0c;为操…...

OpenClaw用户如何通过CLI子命令快速完成Taotoken接入配置

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 OpenClaw用户如何通过CLI子命令快速完成Taotoken接入配置 对于使用OpenClaw进行AI智能体开发的开发者而言&#xff0c;快速接入稳定…...

电弧故障检测与定位片上系统【附程序】

✨ 长期致力于电弧故障采集、电弧故障检测、电弧故障定位、片上系统、全数字锁相环、逐次逼近型模数转换器、低功耗、低成本研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &…...

车道线检测入门:从CULane数据集结构到模型训练(PyTorch实战)

车道线检测实战&#xff1a;从CULane数据集解析到PyTorch模型训练全流程 1. 理解CULane数据集的核心价值 车道线检测作为自动驾驶感知层的关键技术&#xff0c;其性能高度依赖高质量的数据集。CULane凭借其复杂城市道路场景和精细标注&#xff0c;已成为该领域的基准测试集之一…...

GitLab团队协作实战:从分支策略到CI/CD流水线优化指南

1. 项目概述&#xff1a;为什么需要一个专属的GitLab使用指导&#xff1f;在团队协作开发中&#xff0c;版本控制系统是基石&#xff0c;而GitLab作为集代码托管、CI/CD、项目管理于一体的DevOps平台&#xff0c;其重要性不言而喻。然而&#xff0c;对于许多新加入团队的开发者…...

电力线路保护原理与整定计算实战解析:从电流、距离到差动保护

1. 项目概述&#xff1a;从“黑匣子”到“透明逻辑”在电力系统这个庞大而精密的网络中&#xff0c;输电线路如同人体的动脉血管&#xff0c;承担着输送能量的核心使命。然而&#xff0c;这条“动脉”时刻面临着雷击、外力破坏、绝缘老化、过负荷等各类风险的威胁。一旦发生故障…...