各种内部排序算法复杂度的比较和排序方法的选择

离散系统傅里叶变换的常用结论证明 本文介绍了离散系统傅里叶变换的三个重要结论:1)时域卷积对应频域相乘(公式1-3);2)时域相乘对应频域卷积(公式4-6);3)帕塞瓦尔定理(公式7)及其广义形式,证明信号能量在变换域保持不变。文末提供了MATLAB卷积运算演示程序,通过动画展示离散信号卷积过程(翻转、平移、相乘、累加),并以方波信号为例给出运行结果图。该程序直观呈现了卷积运算的步骤与结果。 阅读详情
按平均时间将排序分为四类:

(1)平方阶(O(n2))排序
     一般称为简单排序,例如直接插入、直接选择和冒泡排序;

(2)线性对数阶(O(nlgn))排序

     如快速、堆和归并排序;

(3)O(n1+£)阶排序

     £是介于0和1之间的常数,即0<£<1,如希尔排序;

(4)线性阶(O(n))排序

     如桶、箱和基数排序。
各种排序方法比较

     简单排序中直接插入最好,快速排序最快,当文件为正序时,直接插入和冒泡均最佳。

影响排序效果的因素

     因为不同的排序方法适应不同的应用环境和要求,所以选择合适的排序方法应综合考虑下列因素:
①待排序的记录数目n;
②记录的大小(规模);
③关键字的结构及其初始状态;
④对稳定性的要求;
⑤语言工具的条件;
⑥存储结构;
⑦时间和辅助空间复杂度等。

不同条件下,排序方法的选择

(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
     当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
     快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
     堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
     若要求排序稳定,则可选用归并排序。但本章介绍的从单个记录起进行两两归并的  排序算法并不值得提倡,通常可以将它和直接插入排序结合在一起使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并之。因为直接插入排序是稳定 的,所以改进后的归并排序仍是稳定的。

(4)在基于比较的排序方法中,每次比较两个关键字的大小之后,仅仅出现两种可能的转移,因此可以用一棵二叉树来描述比较判定过程。
     当文件的n个关键字随机分布时,任何借助于"比较"的排序算法,至少需要O(nlgn)的时间。
     箱排序和基数排序只需一步就会引起m种可能的转移,即把一个记录装入m个箱子之一,因此在一般情况下,箱排序和基数排序可能在O(n)时间内完成对n个 记录的排序。但是,箱排序和基数排序只适用于像字符串和整数这类有明显结构特征的关键字,而当关键字的取值范围属于某个无穷集合(例如实数型关键字)时, 无法使用箱排序和基数排序,这时只有借助于"比较"的方法来排序。
     若n很大,记录的关键字位数较少且可以分解时,采用基数排序较好。虽然桶排序对关键字的结构无要求,但它也只有在关键字是随机分布时才能使平均时间达到 线性阶,否则为平方阶。同时要注意,箱、桶、基数这三种分配排序均假定了关键字若为数字时,则其值均是非负的,否则将其映射到箱(桶)号时,又要增加相应 的时间。
(5)有的语言(如Fortran,Cobol或Basic等)没有提供指针及递归,导致实现归并、快速(它们用递归实现较简单)和基数(使用了指针)等排序算法变得复杂。此时可考虑用其它排序。
(6)本章给出的排序算法,输人数据均是存储在一个向量中。当记录的规模较大时,为避免耗费大量的时间去移动记录,可以用链表作为存储结构。譬如插入排 序、归并排序、基数排序都易于在链表上实现,使之减少记录的移动次数。但有的排序方法,如快速排序和堆排序,在链表上却难于实现,在这种情况下,可以提取 关键字建立索引表,然后对索引表进行排序。然而更为简单的方法是:引人一个整型向量t作为辅助表,排序前令t[i]=i(0≤i<n),若排序算法 中要求交换R[i]和R[j],则只需交换t[i]和t[j]即可;排序结束后,向量t就指示了记录之间的顺序关系:
        R[t[0]].key≤R[t[1]].key≤…≤R[t[n-1]].key
  若要求最终结果是:
       R[0].key≤R[1].key≤…≤R[n-1].key
则可以在排序结束后,再按辅助表所规定的次序重排各记录,完成这种重排的时间是O(n)。

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> width="728" scrolling="no" height="90" frameborder="0" name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-7503078996360560&dt=1184249618831&lmt=1181467139&prev_fmts=728x15_0ads_al_s&format=728x90_as&output=html&correlator=1184249618751&channel=6787777941&pv_ch=6787777941%2B&url=http%3A%2F%2Fjackie.cnlog.org%2F2006%2F12%2Fdifferences_in_different_sort_ways.html&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=000000&color_border=FFFFFF&ad_type=text&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Flm%3D0%26si%3D%26rn%3D10%26ie%3Dgb2312%26ct%3D0%26wd%3D%25C5%25C5%25D0%25F2%2B%25CA%25B1%25BC%25E4%25B8%25B4%25D4%25D3%25B6%25C8%26pn%3D10%26cl%3D3&cc=100&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=16&u_tz=480&u_his=1&u_java=true&u_nplug=16&u_nmime=58" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true">
 
人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】 摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字) 阅读详情

相关推荐

2025最新正版Autodesk 3ds Max 2022安装教程:从下载到中文环境配置全流程解析

Autodesk 3ds Max 2022是一款专业的三维建模、动画和渲染软件,广泛应用于影视制作、游戏开发、建筑可视化等领域。

waicsdn_haha的博客 1万+

【数据结构】各种内部排序算法的比较及应用

一般基于三个因素进行对比:时空复杂度,算法的稳定性,算法的过程特征。从时间复杂度来看: 简单选择排序,直接插入排序和冒泡排序平均情况下的时间复杂度都为O(n^2),且实现过程也比较简单,但直接插入排序和冒泡排序最好情况下的时间复杂度可以达到O(n),而简单选择排序则与序列的初始状态无关。 希尔排序作为插入排序的拓展,对较大规模的排序都可以达到很高的效率,但目前未得出其精确的渐进时间。 堆排序利用了一种称为堆的数据结构,可以在线性时间内完成建堆,且在O(nlog2n)内完成排序过程。 快速排序基于分治的思想,

qq_45813532的博客 1058

十大排序算法(内排序)

冒泡排序 思路:第一项和第二项如果不满足既定顺序则交换。第二项和第三项如果不满足既定顺序则交换,满足既定顺序不交换,以此类推,可以发现一次排序下来 ...

飞奔的WSL-WLL 724

基于 VS Code + CMake + Make + GNU工具链 + OpenOCD 的通用MCU开发环境搭建教程

以CH32V307(RISCV)和STM32F103(Cortex-M3)为例的Vscode+gnu单片机环境搭建。

余十三_的博客 2173

MAX96724解串器拨码配置实战:从COAX/GMSL2模式到IIC地址设定

本文详细解析了MAX96724解串器的拨码配置方法,涵盖电源管理模式、I2C地址设定及COAX/GMSL2视频传输模式。通过实战案例和故障排查技巧,帮助工程师快速掌握xcDeserializer4.0版本的配置要点,避免常见错误,提升车载摄像头和工业视觉系统的调试效率。

weixin_29243279的博客 576

十大经典排序算法全解析

十大经典排序算法解析,及C语言代码实现

m0_71974552的博客 5287

利用Openlayers4实现地图遮罩效果(二)

之前实现的遮罩效果,在深色背景的底图上,对要突出的区域采用半透明遮罩,以此来突出该区域。但是有时底图颜色偏白,这时候不再适合对要突出的区域采用遮罩,而是要对突出区域之外进行遮罩处理。两种效果的对比入下图: ...

此爱如少年 6398

11种排序算法

排序算法以及时间复杂度空间复杂度的总结文章。

YYHYJX的博客 379

STM32串口DMA双缓冲机制实战:提升数据传输效率的终极方案

本文深入解析了STM32串口DMA双缓冲机制的核心原理与实战配置。通过对比传统中断方式,阐述了双缓冲如何实现数据接收与处理的“无缝接力”,从而在工业传感器数据采集等高负载场景下,将CPU占用率降至极低水平并彻底避免数据丢失。文章提供了基于标准外设库的详细配置步骤、中断处理逻辑及性能实测数据,是提升嵌入式系统串口通信效率和可靠性的终极方案。

weixin_29192365的博客 79

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

847

时间复杂度O(nlogn)的排序算法

时间复杂度O(nlogn)的排序算法有四种,分别是希尔排序,堆排序,快速排序和归并排序。这四个排序都非常重要。 希尔排序 希尔排序本质上是插入排序的优化,先对间隔较大的元素进行插入排序,完成宏观调控,然后逐步缩小间隔,最后一轮一定是间隔为 1 的排序,也就是插入排序。间隔在希尔排序中被称为「增量」,增量序列不同,希尔排序的效率也不同。 堆排序 堆排序的关键在于建堆,堆分为大顶堆和小顶堆,大顶堆中最大的元素在堆顶,小顶堆同理。 堆实际上是一颗完全二叉树,不过为了方便我们把它用数组的形式储存,储存的顺

qq_43533956的博客 1万+

2026 年 AI 大模型资讯深度研究报告 / 2026 年 3 月 11 日

2026 年已成为 AI 大模型发展的关键拐点年。从 2023 年 ChatGPT 开启的技术奇点,历经多模态突破、推理能力崛起,至 2025 年形成产业爆发态势,AI 大模型正从"技术验证期"迈向"产业落地期"。核心发现技术突破: OpenAI 于 2026 年 3 月 6 日发布 GPT-5.4,首次实现原生计算机操控能力,在 OSWorld 桌面操控测试中以 75% 成功率超越人类 (72.4%),标志着 AI 从"对话工具"向"自主数字员工"的时代跃迁市场格局。

AI天才研究院 784

各种内部排序算法时间复杂度比较和排序方法的选择

转载地址:http://blog.chinaunix.net/uid-26565142-id-3126683.html 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法:   这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n)。当数据为正序,将不会有

liukaiyu_ak的专栏 5869

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

转--各种内部排序算法复杂度的比较和排序方法的选择

内部排序算法比较

hello 507

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

各种内部排序算法复杂度的比较,排序方法的选择和常见算法的实现

  各种内部排序算法复杂度的比较和排序方法的选择  按平均时间将排序分为四类:(1)平方阶(O(n2))排序     一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序     如快速、堆和归并排序;(3)O(n1+£)阶排序     £是介于0和1之间的常数,即0(4)线性阶(O(n))排序     如桶、箱和基数排序。各种排序

892

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python冒泡排序算法时间复杂度为nlogn_各种内部排序算法复杂度的比较和排序方法的选择...

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后...

weixin_28745067的博客 462

【排序算法】数据结构排序详解

排序算法的实现

m0_56069910的博客 1680

排序算法专题

根据关键字分布情况选择排序方法。

weixin_46878941的博客 2863

内部排序算法

外部排序:待排序的记录数量很大,以至内存不能一次全部容纳,在排序过程中还需对外存进行访问。 内部排序:待排序记录存放在计算机随机存储器中进行的排序过程。内部排序大致分为五类:插入排序,交换排序,选择排序,归并排序和计数排序。 常用基于比较的排序算法:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序 非比较的排序算法:计数排序、桶排序、基数排序   插入排序 1.直接插入排序 ...

slience_646898的博客 445

各种内部排序算法的比较和应用

内部排序算法的比较 (表可以往右划) 算法种类 最好时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 直接插入排序 O(n) O() O() O(1) 稳定 希尔排序 O(nlogn) O(1) 不稳定 简单选择排序 O() O(​​​​​​​) O(​​​​​​​) O(1) 不稳定 堆排序 O(nlogn) O(nlogn)

24考研人晴落的博客 491
上一篇: 排序算法空间、时间复杂度
下一篇: 二叉树的五个性质
TrueLie
博客等级 码龄24年 85粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值