DS-排序回顾
快速排序相比于堆排序的优点有:
-
效率更高:快速排序的平均时间复杂度为 O(nlogn),而堆排序的时间复杂度为 O(nlogn)。虽然它们的时间复杂度相同,但是在实际情况下,快速排序往往比堆排序更快,因为快速排序具有良好的局部性和缓存性能。
-
原地排序:
快速排序是一种原地排序算法,它不需要额外的空间来存储临时数据。相比之下,堆排序需要使用额外的空间来构建和维护堆。
快速排序需的递归栈深度=O(n),平均O(log2n),堆排序构建和维护栈不要额外空间 -
稳定性:快速排序是一种不稳定的排序算法,意味着相等元素的相对顺序可能会发生改变。而堆排序是一种稳定的排序算法,相等元素的相对顺序不会改变。
-
对于小规模数据集的处理更快:当待排序的数据规模较小时,快速排序通常比堆排序更快。这是因为快速排序在每次递归时只需要处理部分数据,而堆排序需要对整个数据集进行操作。
总体而言,快速排序在大多数情况下更加高效且具有更好的性能表现,但在某些特殊情况下,堆排序可能更适合使用。
插入排序系
- 插入排序,每次查找未排序记录的第一个在已排序记录中的位置,比较的过程中将大者后移一位
- 希尔排序,间隔从大到小,每次用插入排序
- 折半查找,每次找到位置,什么时候更新?
选择排序
- 本体:每次从未排序中选最小的放在前面
- 堆排序:——optimal applied situation/scene:1亿个只取100个最大的
构建initial堆: - 按插入,最小堆的构建O(n)
- 筛选法:从 ⌈ \lceil ⌈ n/2 ⌉ \rceil ⌉ 的位置开始,将该节点(以最小堆为例)下移到左右子均比它大,用时最坏O(n),最好(n/2),平均O(n)
排序:每次将堆顶与堆尾交换,再下移新堆顶,用时O(nlog2n),
1+2总用时O(nlogn)
插入:放到堆尾,上移到比双亲大
删除:与堆尾交换,原堆尾再下移到比孩子小,删除新的堆尾
交换排序
- 冒泡排序:从后往前,每次把最小的放到最前边
- 快速排序:任取一点(队首),分治法,左边为小的,右边为大的,逆序对交换,递归层数=(log2n - n)
归并和基数
- 归并:与希尔的共同点,都有一个超参幂乘
- 2路归并:归并段直接比较即可,不同归并段的合并用额外空间,比较次数n2n-1,log2n次归并O(nlog2~n)
- k路平衡归并:败者树,初始二叉树用时k-1,有序归并段中取出新的最小值用时O(log2k),一趟合并用时O(nlog2k),共O(nlog2k log~k n)=O(nlog2n),初始归并段的获得,可用快排平均O(nlog2k),最坏O(n2)(置换-选择得到的为非平衡,败者树用时O(nlog2|WA|))
- 基数排序:按位数从小到大,用计数排序
计数排序可用1)数组形式,~~2)每个数据需要包含一个指针,r个队列(数据数位0-r-1),存储当次排序的首指针?~~算了我们还是用标准的数组把
外部排序
- 数据量太大,内存放不下,一般采用归并方法,每次取一小段,排好了再放回去
- 对m路归并,内存缓冲区分成2m个输入区和2个输出区(存放归并完成的结果),*2=1个存放内存到缓冲区的交互,一个用于中和缓冲区和外存的交互
缓冲区1写满了,就全部放到buffer2,接着往buf1写,同时buf2并行写入memory - 如何减小归并趟数,进而减小访存次数?
- 增大归并的路数,但直接比较来确定r个有序队列最小值,导致比较用时上升;采用败者树可以抵消路数增大导致的比较时间变长
- 增大初始段长,置换-选择法,将初始序列通过k=|WA|的败者树分成不定长有序初始段的集合,段长即为为归并代价
—— 利用Huffman算法,得到合并路径的规划方案,k路不平衡归并总用时=2*WPL*log2k O(WPL*log2k)
相关文章:
DS-排序回顾
快速排序相比于堆排序的优点有: 效率更高:快速排序的平均时间复杂度为 O(nlogn),而堆排序的时间复杂度为 O(nlogn)。虽然它们的时间复杂度相同,但是在实际情况下,快速排序往往比堆排序更快,因为快速排序具有…...
clion软件ide的安装和环境配置@ubuntu
1.官网: Download CLion 2.安装Clion 直接在官网下载并安装即可,过程很简单 https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/download/#sectionlinux 3.激活码 4.配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©…...
Cpp学习——类与对象3
目录 一,初始化列表 1.初始化列表的使用 2.初始化列表的特点 3.必须要使用初始化列表的场景 二,单参数构造函数的隐式类型转换 1.内置类型的隐式类型转换 2. 自定义类型的隐式类型转换 3.多参数构造函数的隐式类型转换 4.当你不想要发生隐式类型转换…...
回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图&a…...
ahooks.js:一款强大的React Hooks库及其API使用教程(四)
一、ahooks.js简介二、ahooks.js安装三、继续ahooks.js API的介绍与使用教程51. useResetState52. useUpdateLayoutEffect53. useDeepCompareLayoutEffect54. useRafInterval55. useRafTimeout56. useTimeout57. useLockFn58. useDocumentVisibility59. useDrop60. useDrag 一、…...
FOSSASIA Summit 2023 - 开源亚洲行
作者 Ted 致歉:本来这篇博客早就该发出,但是由于前几个月频繁差旅导致精神不佳,再加上后续我又参加了 Linux 基金会 7/27 在瑞士日内瓦举办的 Open Source Congress,以及 7/29-30 台北的 COSCUP23,干脆三篇连发&#x…...
QT 基本对话框
包括: 1.标准文件对话框 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QTextCodec> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QGridLayout> #include <QFr…...
8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022&…...
Azure静态网站托管
什么是静态网站托管 Azure Blob的静态网站托管是一项功能,它允许开发人员在Azure Blob存储中托管和发布静态网站。通过这个功能,您可以轻松地将静态网页、图像、视频和其他网站资源存储在Azure Blob中,并直接通过提供的URL访问这些资源。 官…...
LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表
题目一: 54. 螺旋矩阵https://leetcode.cn/problems/spiral-matrix/ 题目要求: 思路:一定要先找好边界。如下图 ,上边界是1234,右边界是8、12,下边界是9、10、11,左边界是5,所以可…...
常用消息中间件介绍
RocketMQ 阿里开源,阿里参照kafka设计的,Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现,非常重量级,更适…...
装饰器读取不到被装饰函数的参数-已解决
def write_case_log(func):def wrapper(*args, **kwargs):logger.info("{}开始执行".format(func.__name__))func(*args,**kwargs)logger.info("{}执行中".format(args))logger.info("{}执行结束",format(func.__name__))return wrapper被装饰函…...
python爬虫爬取中关村在线电脑以及参数数据
一. 内容简介 python爬虫爬取中关村在线电脑以及参数数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 三.主要流程 3.1 代码 解析都在代码里面 # 接口分析 # 原始接口,后面几个数字就是占位的,每个位置代表着不同的标签 # http…...
chatGPT-对话爱因斯坦
引言 阿尔伯特爱因斯坦( 1879年 3 月 14 日 – 1955 年 4 月 18 日)是一位出生于德国的理论物理学家,被广泛认为成为有史以来最伟大、最有影响力的科学家之一。他以发展相对论而闻名,他还对量子力学做出了重要贡献,因…...
嵌入式软件开发中的数据类型转换
在嵌入式软件开发时,数据的显示必不可少,那么必定会涉及到数据类型转换。将不同类型的数据在编程中进行转换,以便满足不同的需求。 插入一个知识点: 在C语言中,字符串是由字符组成的字符数组,以null终止符…...
The Go Blog 01:反射的法则(译文)
反思的法则 罗伯-派克 2011 年 9 月 6 日 引言 计算机中的反射是指程序检查自身结构的能力,尤其是通过类型检查自身结构的能力;它是元编程的一种形式。它也是造成混乱的一个重要原因。 在本文中,我们试图通过解释 Go 中的反射是如何工作的…...
Visual Studio Code前端开发插件推荐
引言 Visual Studio Code(简称VS Code)是一款轻量级且强大的开源代码编辑器,广受前端开发者的喜爱。其丰富的插件生态系统为前端开发提供了许多便利和增强功能的插件。本篇博客将向大家推荐一些在前端开发中常用且优秀的插件,并提…...
jps(JVM Process Status Tool):虚拟机进程状况工具
jps(JVM Process Status Tool):虚拟机进程状况工具 列出正在运行的虚拟机进程,并显示虚拟机执行主类名称(Main Class,main()函数所在的类)以及这些进程的本地虚拟机唯一ID(LVMID&am…...
初阶c语言:实战项目三子棋
前言 大家已经和博主学习有一段时间了,今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳:推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…...
计网第三章(数据链路层)(三)
一、点对点协议PPP 在第一篇里有提到数据链路层的信道分为两种:点对点信道和广播信道。 PPP协议就属于点对点信道上的协议。 如果对前面数据链路层的三个基本问题了解的比较透彻,那么这一块很多东西都很好理解。 从考试的角度来讲,PPP协议…...
蓝桥杯每日N题 (砝码称重)
大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...
Opencv 视频的读取与写入
目录 前言 通过路径获取视频内容 获取视频内容 检查是否正确打开 循环播放 完整代码 从摄像头读取视频数据 获取视频设备 其他与直接读取视频一致 完整实例 录制视频 用于创建视频编解码器的四字符码(FourCC) cv2.VideoWriter() 将视频帧…...
LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
Cesium轨迹漫游及视角切换
飞行漫游,就是让Camera飞行。Camera有一些方法可以实现位置、视角的调整,比如flyTo,setView方法。但这些方法并不能沿着我们想要的路径调整,在通过插值的方法不停的调用setView,但这样会造成视图卡顿,而且计…...
构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!
随着互联网技术的不断发展,微服务架构已经成为了开发和部署应用程序的一种主流方式。然而,当应用程序需要满足高可用性和高并发需求时,单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此,构建一个去中心化的微服务集群…...
开集输出和开漏输出
首先指明一下以下8中GPIO输入输出模式: GPIO_Mode_AIN 模拟输入; GPIO_Mode_IN_FLOATING 浮空输入; GPIO_Mode_IPD 下拉输入; GPIO_Mode…...
解决内网GitLab 社区版 15.11.13项目拉取失败
问题描述 GitLab 社区版 发布不久,搭建在内网拉取项目报错,可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…...
【MySQL--->表的约束】
文章目录 [TOC](文章目录) 一、表的约束概念二、空属性约束三、default约束四、zerofill约束五、主键约束六、auto_increment(自增长)约束七、唯一键约束八、外键约束 一、表的约束概念 表通过约束可以保证插入数据的合法性,本质是通过技术手段,保证插入数据收约束,保证数据的…...
github中Keyless Google Maps API在网页中显示地图和标记 无需api key
使用Google Maps API在网页中显示地图和标记的示例博客。以下是一个简单的示例: C:\pythoncode\blog\google-map-markers-gh-pages\google-map-markers-gh-pages\index.html 介绍: 在本篇博客中,我们将学习如何使用Google Maps API在网页中…...
ComPDFKit PDF SDK for Windows Crack
ComPDFKit PDF SDK for Windows Crack 添加了在创建文本框时调整默认属性的支持。 增加了对调整PDF大小时调整宽度的支持。 添加了对编辑文本时更多快捷方式的支持。 优化了文本输入,并将字体样式与原始文本相匹配。 在内容编辑器模式下复制和粘贴时优化了UI交互。 …...
微信小程序在哪里找到/郑州seo关键词优化公司
1、问题描述:如果想在编辑markdown中实现下图效果 该怎么敲内容呢? 2、 问题解决: 小黑点可以通过减号加空格的方式敲出,其实空心的点也是减号加空格只是减号前面要多敲三个空格,当然空格多于三个也是可以的。 …...
网站建设运营费用包括哪些/网络营销好找工作吗
阅读本文大概需要 3.5 分钟。 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统。 所以现在打算重写,加上距离现在也有一段时间了,也算…...
vps可以做多少网站/优化的定义
注:我是先安装的MathType7,结果试用期过了,不能用,打算重新卸载安装,捣鼓了好久,终于可以用了。 我的word是2019,此次安装MathType6.9,亲自试验,很实用,解决了…...
前端开发中英文网站怎么做/官方百度app下载安装
#Android应用界面开发 第三章学习 第三部分 异步处理中使用AsyncTask踩过的坑 AsyncTask是Android提供的工具之一,可以简单方便地用于子线程更新UI,他也是个抽象类,使用时需要重写其方法,根据定义时传入的3个参数类型来判断重写哪…...
cms网站开发/怎么样建立自己的网站
例如:var strq1207526854 str.substring(form,to):从字符串里截取下标为form到下标为to的字符串(不包括to对应的字符)alert(str.substring(2,6)) // 2075当form>to时,substring会把较小的参数作为第一参数 al…...
济南市个人网站制作/谷歌平台推广外贸
1. 简单三级联动 效果图: 思想:当选择省时,创建对应的市子对象,并将其加入父元素中。当选择某一个市时,创建对应的区子对象,并将其加入父元素中。当选择其他省/市时,对应的市、区/区的选项都变…...