《算法技术手册》一2.3 最好、最坏和平均情况下的性能分析

简介: 本节书摘来华章计算机《算法技术手册》一书中的第2章 ,第2.3节, George T.Heineman Gary Pollice Stanley Selkow 著 杨晨 曹如进 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 最好、最坏和平均情况下的性能分析

也许有人会问,上述结果是否对于所有的输入问题样本都成立?第二种排序算法对于同等规模的其他数据样本表现会如何呢?
输入数据可能包含大量已排好序的元素。
输入数据可能包含重复值。
无论输入数据规模n是多少,元素集合都可以从一个非常小的数据集扩展而来,只不过会有相当多的重复值。
从图2-1上可以看出,第四种排序算法虽然在排序n个乱序字符串时最慢,但它在处理已经排好序的数据时却是最快的。不过,这种领先优势消失得非常快,如图2-2所示,在排序32个乱序的字符串时,第三种排序算法的性能最好。
2017_09_19_153908
图2-2:处理完全或者几乎有序的数据时,排序算法的性能
尽管如此,如果一个包含n个字符串的输入“近乎有序”,比如输入数组由有序数组中n/4的字符串(占总字符串的25%)与距离其4个位置的元素交换而得。那么,最终结果会有些出乎意料,如图2-3所示,第四种排序算法的性能表现要远远好于其他排序算法。
对于许多问题来说,单一的最优算法并不存在。选择一个算法需要对问题有着充分的理解,并且知道这个问题将要处理数据规模的概率分布情况,此外还必须考虑算法的实际行为。
这里提供了一些指导性的信息。算法通常可以按以下三类情况进行分析:
最坏情况
最坏情况是指算法对于一类问题样本表现出的最坏性能。通常,算法设计人员在描述最坏情况时,会指出导致算法无法高效执行的输入数据的特征,而并非找出特定的输入数据。
平均情况
平均情况是指算法在随机给定的数据上期望的执行情况。某些问题样本可能会由于一些特例而导致程序需要更长的时间才能完成,但是大多数情况都并非如此。平均情况描述了一般用户对算法性能的期望。
最好情况
最好情况是指算法对于一类问题样本表现出的最好性能。对于这类样本,算法只需要执行很少的计算。在实际情况中,最好情况很少出现。
通过了解算法在每种情况下的性能,读者就能判断它是否适用于特定场景。
2017_09_19_154018
图2-3:第四种排序算法在处理几乎有序的数据时性能最好

相关文章
|
4月前
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
92 4
|
4月前
|
存储 监控 算法
内网监控桌面与 PHP 哈希算法:从数据追踪到行为审计的技术解析
本文探讨了内网监控桌面系统的技术需求与数据结构选型,重点分析了哈希算法在企业内网安全管理中的应用。通过PHP语言实现的SHA-256算法,可有效支持软件准入控制、数据传输审计及操作日志存证等功能。文章还介绍了性能优化策略(如分块哈希计算和并行处理)与安全增强措施(如盐值强化和动态更新),并展望了哈希算法在图像处理、网络流量分析等领域的扩展应用。最终强调了构建完整内网安全闭环的重要性,为企业数字资产保护提供技术支撑。
121 2
|
5月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
533 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
5月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
137 7
|
5月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
95 0
|
16天前
|
机器学习/深度学习 算法 新能源
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
|
18天前
|
算法 机器人 定位技术
基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真
本程序基于机器视觉与Dijkstra算法,实现平面建筑群地图的路径规划。通过MATLAB 2022A读取地图图像,识别障碍物并进行路径搜索,支持鼠标选择起点与终点,最终显示最优路径及长度,适用于智能导航与机器人路径规划场景。
|
19天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的XGBoost时间序列预测算法matlab仿真
本程序基于Matlab 2024b实现,结合粒子群优化(PSO)与XGBoost算法,用于时间序列预测。通过PSO优化XGBoost超参数,提升预测精度。程序包含完整注释与操作视频,运行后生成预测效果图及性能评估指标RMSE。
|
16天前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
|
16天前
|
存储 算法 安全
【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)
【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)
107 0

热门文章

最新文章