`

线性时间选择算法

阅读更多

线性时间选择算法

 

找出的基准x至少比3(n-5)/10个元素大,因为在每一组中有2个元素小于本组的中位数,中位数处于1/2*[n/5-1],即n/5个中位数中又有(n-5)/10个小于基准x。同理,基准x也至少比3(n-5)/10个元素小。而当n≥75时,3(n-5)/10≥n/4所以按此基准划分所得的2个子数组的长度都至少缩短1/4。
这个其实比较容易理解:
数组中共n个元素,5个元素一组,一共分成约m=n/5组。每组中间大小的那个数不妨称其为“次中位数”。
在m=n/5个“次中位数”中再取出中间值,这就是整个数组的“中位数”X。
很显然,约有一半的“次中位数”比X还要小【(n-5)/10<m/2】
在这些组中,每组起码要有3个元素(连“次中位数”也算上)比X小,
所以整个数组中起码要有3(n-5)/10个元素比X小。
当n≥75时3(n-5)/10≥n/4,也就是说起码有1/4的元素比X小。
同理,起码也有1/4的元素比X还要大。
这样就保证了这个中位数的选择比较合理,划分之后最长的数组也不会超过原来的3/4,总体划分比较均匀
假设你们年级有10个班,每个班只有5个人。
某次考试中,你在你们班考了第三名(次中位数)。
将每个班的第三名放在一起比较,你在这十个人中排第5名(中位数)。
那岂不是说,整个年级中至少有15个人成绩比你还要低?

 

分享到:
评论

相关推荐

    线性时间选择算法实现

    在实际应用中,线性时间选择算法常用于大数据处理和在线算法中,因为它能在不完全遍历数组的情况下找到目标元素,减少了计算资源的消耗。同时,通过适当的优化,如使用并行化或分布式计算,还可以进一步提升其性能。...

    线性时间选择算法(附完整的代码,结合例题详细解析) 全套资源已打包好,求抱走!!!

    3)分析线性时间选择算法的计算效率。 题目给定了一个包含n个元素的一维线性序列a[0:14]={2,9,11,3,14,7,10,8,15,4,13,1,6,5,12},想要我们求第k小的元素。 注意看,a[0:14]是一个未排序好的数组!那么想要求第k小...

    线性时间选择算法(C++)

    线性时间选择算法是一种在计算机科学中用于从一组数据中找到第k小(或大)元素的高效算法,尤其在大规模数据处理时表现突出。它以其在最坏情况下的线性时间复杂度O(n)而著称,这里的n是数组或集合中元素的数量。这个...

    线性时间选择中位数算法

    1. **掌握线性时间选择的基本算法及其应用:** 线性时间选择算法是一种可以在平均或最坏情况下达到线性时间复杂度的选择算法,它主要用于在无序数组中找到第k小的元素。该算法特别适用于大规模数据集,其核心思想是...

    线性时间选择算法的C++实现

    线性时间选择算法的C++实现 g++下编译通过

    《算法设计与分析》实验报告:实验二(线性选择问题)

    在本实验中,我们通过在快速排序算法的基础上进行改进,实现了一个线性时间选择算法,并通过大量实验来分析其时间复杂性。该问题的核心在于从n个元素中找到第k小的元素,这在数据挖掘、统计分析等多个领域有着广泛的...

    本科算法实验-线性时间选择【数据+代码+说明+流程图+测试用例】

    线性时间选择是计算机科学中一个基础而重要的算法问题,主要涉及到数组操作和最值查找。这个算法在本科阶段的算法课程中常常被教授,因为它不仅理论价值高,而且在实际应用中也有广泛的需求,例如在排序算法如快速...

    线性时间选择 算法设计

    线性时间选择 算法设计与分析,是实验程序……

    线性时间选择C++代码

    可用的最坏情况下的线性时间选择算法的C++代码

    随机化算法实验(Sherwood型线性时间选择).docx

    随机化算法实验(Sherwood型线性时间选择) 本次实验的主要目的是掌握 Sherwood 型线性时间选择算法的设计思想、程序设计和实现。 Sherwood 型线性时间选择算法是一种随机化算法,通过随机选择基准元素来实现选择...

    算法 线性时间选择

    算法之线性时间选择 文档包括详细的算法分析与代码示例

    分治策略 线性时间选择2

    线性时间选择算法是一种使用分治策略的选择算法,它可以在线性时间内选择出一个数组中的第k小元素。该算法的核心思想是使用分治策略将原始数组分解成小规模的数组,然后递归地选择每个小数组的中位数,以获得所需的...

    C语言实现的线性时间选择

    C语言实现的线性时间选择,该算法效率在最坏情形时也较高。

    fa.rar_visual c_线性时间选择

    线性时间选择算法对于大型数据集的处理尤其有用,因为它减少了计算时间,提高了效率。在实际应用中,如数据库查询、大规模数据排序和机器学习模型的训练,这类高效的选择算法都是必不可少的工具。 在学习和理解这个...

    基于java线性时间选择源码.zip

    线性时间选择算法是一种在数组或集合中找到第k小(或大)元素的高效算法。这个算法在计算机科学和编程领域中具有重要的应用,特别是在数据结构和算法设计中。基于Java实现的线性时间选择源码可以帮助我们理解这一...

    随机化算法实验(Sherwood型线性时间选择).pdf

    【舍伍德型线性时间选择算法】 舍伍德型线性时间选择算法是一种随机化算法,主要用于在数组中寻找第k小(或第k大)的元素,它改进了经典的快速选择算法,通过引入随机化策略提高了平均性能。算法的目标是在平均情况...

    分治策略 线性时间选择

    线性时间选择的算法实现主要包括以下步骤: * 将数组分割成更小的子数组 * 对每个子数组进行排序 * 合并结果以选择第k小的元素 在代码实现中,我们使用了希尔排序算法对每个子数组进行排序,然后使用分治策略选择...

    线性时间排序算法

    ### 线性时间排序算法概述 #### 一、比较排序与决策树模型 线性时间排序算法是指那些能够在O(n)或接近O(n)时间复杂度内完成排序任务的算法。传统上,大多数排序算法如冒泡排序、选择排序等的时间复杂度至少为O(n ...

    Linear-time-selection.zip_visual c_线性时间选择

    线性时间选择算法是计算机科学中的一个重要概念,它在数据结构和算法领域有着广泛的应用。这个算法主要用于在未排序的数组或序列中找到第k小(或大)的元素,其核心思想是在O(n)的时间复杂度内完成,其中n是数组的...

Global site tag (gtag.js) - Google Analytics