排序基础方法

逆序(inversion)

一个序列中存在元素对,顺序与理想顺序相反

注意事项

  1. 算法的空间复杂度,即便graph本身要花费V+E,但是DFS是V,只考虑自身要用的。

Selection Sort(选择排序)

方法

不断选择最值元素,交换到最前面

时间复杂度(N*2)

Heap Sort (堆排序)

方法

  1. 进行堆化,在原数组进行操作,使他满足堆的特性。

  2. 进行排序,delete开头的,删除size,后面的就是sorted array

时间复杂度(NlogN)

底向上堆化的时间复杂度是 O(n)。虽然每次向下调整的时间复杂度是 O(log⁡n),但由于大部分节点都在树的底层,因此总的调整次数相对较少,导致整体复杂度为 O(n)。这是因为大部分非叶子节点较少,只有少数节点需要进行多次调整。

空间复杂度 (1)

Merge Sort

方法

分解(Divide):Mergesort 每次将数组分成两半,直到每个子数组只包含一个元素。这个过程形成了一个递归树,每一层的深度为 nlogn,因为每次都将数组分成两半。

合并(Conquer):在每一层中,需要将所有的子数组合并成一个有序数组。合并两个已排序的子数组的时间复杂度是 O(n),因为需要遍历每个元素。

时间复杂度(NlogN)

空间复杂度(N)

Insertion Sort

方法

两个指针,从后一直往前对比,然后插入到正确的位置

很适合只有很少的逆序的排序

时间复杂度(N+K逆序数)

大于N,虽然不用动,但是仍需要查看

小于N*2,一个三角形,swap很多次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客编程初学者入门训练——BC53 判断是元音还是辅音

BC53 判断是元音还是辅音 描述 KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音&#x…

vue3+ElementPlus+Table+Fixed属性导致行背景颜色失效

1.修改表格偶数行多选框背景颜色(静态) :deep(.el-table__body-wrapper tr:nth-child(even) td.el-table-fixed-column--left) {background: #1d2745; } 2.修改表格偶数行背景颜色(静态) :deep(.el-table__body-wrapper tr:nth…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型,使用多个 GPU 快速生成长视频,无需额外训练。它能够基于用户提供的文本或图片提示,创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

Axure使用echarts详细教程

本次使用的axure版本为rp9,下面是效果图。 接下来是详细步骤 【步骤1】在axure上拖一个矩形进来,命名为myChart(这个根据实际情况来,和后面的代码对应就好) 【步骤2】 点击交互->选择加载时->选择打开链接->链接外部地址 点击fx这个符号 【步骤3】在弹…

【GIT】.cr、.gitattributes 、 .gitignore和.git各文件夹讲解介绍

在 Git 项目中,.cr、.gitattributes 和 .gitignore 文件分别用于不同的配置和管理功能。下面分别解释这些文件的作用和用途: 1. .gitignore 文件 作用: .gitignore 文件用于指定哪些文件或目录应该被 Git 忽略,不会被追踪或提交…

通过API进行Milvus实例配置

更新Milvus各个组件的配置参数。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 ​编辑调试 授权信息 下表是API对应的授权信息,可以在RAM权限策略语句的…

使用Typora撰写笔记常用命令

markdown的使用和说明 文章目录 markdown的使用和说明1.标题2.段落3.文字显示4.列表1.无序列表 (**) 空格2.有序列表3.任务列表 5.区块显示 1.标题 语法:#(一级标题) ##(耳机标题) 2.段落 sh…

LabVIEW提高开发效率技巧----减少UI更新频率

在LabVIEW开发中,图形化用户界面(UI)的更新频率对程序的响应速度有着显著影响。频繁的UI更新会占用大量资源,导致系统性能下降。本文将详细介绍如何通过减少UI更新频率来提升LabVIEW程序的运行效率,从多个角度进行分析…

Leetcode 判断子序列

通过双指针来判断字符串s是否是字符串t的子序列。 算法思想: 双指针法: 我们使用两个指针i和j分别遍历字符串s和t。初始时,i指向s的第一个字符,j指向t的第一个字符。 匹配字符: 每次比较s[i]和t[j]: 如果…

大模型撬动数据新质生产力,我们重新解构了智能BI

大模型撬动数据新质生产力, 我们重新解构了智能BI 作者 | 曾响铃 文 | 响铃说(xiangling0815) “超级人工智能将在‘几千天内’降临。” 最近,OpenAI 公司 CEO 山姆奥特曼在社交媒体罕见发表长文,预言了这一点。之前…

web前端-----html5----用户注册

以改图为例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>用户注册</title> </hea…

MySQL数据库增删改查基础操作(超长详解)

目录 1库的操作 显示数据库&#xff1a; 创建一个库 使用数据库 删除数据库的名 2表操作&#xff1a; 显示表 创建表 查看表 删除表名 新增 查出表的所有行和列&#xff1b; 实例&#xff1a; 别名&#xff1a; 去重&#xff1a; 排序&#xff1a; 限制查找的…

第五课 Vue中的显示隐藏指令

Vue中的显示与隐藏指令 v-show用于显示或隐藏DOM元素&#xff0c;配合布尔值表示显示状态&#xff0c;使用场景较多 基础示例&#xff1a; <style>.test{width: 100px;height: 100px;background: red;}</style><div id"app"><div class"…

01-gcc编译c++过程

GCC编译C的四个主要步骤 预处理&#xff08;Preprocessing&#xff09;编译&#xff08;Compilation&#xff09;汇编&#xff08;Assembly&#xff09;链接&#xff08;Linking&#xff09; 1. 预处理&#xff08;Preprocessing&#xff09; 作用&#xff1a;处理所有预处理…

IC验证面试中常问知识点总结(五)附带详细回答!!!

13、phase相关 13.1 phase列表及分类 task phase: 耗费仿真时间,如run phase;给DUT施加激励、监测DUT的输出都是在这些phase中完成的。 function phase:如build_phase、connect_phase等,这些phase都不耗费仿真时间。 13.2 为什么引入动态运行phase(12个小phase)? 为了…

JNA调用c++动态库返回数据

jna学习网站 JNA Examples 1、返回String, pch.h头文件 // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次&#xff0c;提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能&#xff0c;包括代码完成和许多代码浏览功能。 // 但是&#xff0c;如果此处…

Spring 中的 @AUtowire 和 @Resource 用法和原理,以及避坑

&#x1f31f; Why&#xff1a;了解 Autowire 和 Resource 的高级用法和原理对于开发大型企业级应用至关重要。这些注解不仅帮助我们实现组件之间的松耦合&#xff0c;还能提高代码的可维护性和可测试性。掌握它们的高级用法可以让我们更灵活地处理复杂的依赖关系。 &#x1f…

docker harbor

文章目录 一&#xff0c;搭建私有仓库1.1下载registry1.2在 daemon.json 中添加私有镜像仓库地址1.3重新加载重启docker1.4运行容器1.5拉取一个centos7镜像1.6给镜像加标签1.7上传镜像1.8显示私有仓库的所有镜像1.8查看私有仓库的 centos 镜像有哪些tag 二&#xff0c;什么是ho…

SVN——常见问题

基本操作 检出 提交 更新 显示日志 撤销本地修改 撤销已提交内容 恢复到指定版本 添加忽略 修改同一行 修改二进制文件

个人博客搭建 | Hexo框架

文章目录 1.Hexo安装2.创建博客3.将博客通过GitHub来部署4.更换主题 1.Hexo安装 Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他标记语言&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。搭建Hexo首先要…