下载此文档

3.6次序统计.ppt


文档分类:金融/股票/期货 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
§(次序统计)---:已知n元数组A[1:n],确定其中第k最小的元。――最容易想到的算法是采用一种分类算法先将数组按不降的次序排好,然后从排好序的数组中捡出第k小的元素。但这样的算法在最坏情况下至少是O(nlogn),甚至可达O(n2)。实际上,我们可以设计出时间复杂性为O(n)的算法。§--分治策略划分侗瓮蔼奎***∈S,把S分成三个小集合s1,s2,s3例如,取m=63256669788s1s2s3如果k≤|s1|,那么k元就在s1中。如果k≤|s1|+|s2|,那么k元就在s2中,即k元就是m=6。如果k>|s1|+|s2|,那么k元就在s3中。这就把问题分成了小的问题,s1或s3。(n)算法,还必须:s1,s2都不超过S长的某固定分数,以便递归。显然,m最好是中间元或接近中间元。(n)。:例如,n=35,m=?,每个序列5个元,分别分拣好。把所有中间元合成序列M,求M序列中间元m。我们按上图:5个元小序列按纵向分拣(上小,下大),M是按横向分拣(左小,右大),那么由图可知:至少有的元大于或等于m,即小于m的元(集合s1)最多有个元。至少有的元小于或等于m,即大于m的元(集合s3)最多有个元。:查找S中第k最小元ProcedureFIND(k,S)()|S|<50thenbeginsortS;,不足5的余数另行处理;分拣5元小序列;设M为5元小序列中间元的集合;←FIND(,M),s2,s3;(m为分裂元,3个集合中的元分别小于、等于、大于m)|s1|≥kthenreturnFIND(k,s1)(|s1|+|s2|≥k)thenreturnmelse(即k元在s2中,也就是分裂元m)returnFIND(k-|s1|-|s2|,s3)end注:该算法语句编号与书上有区别!2和3是找中间元,3递归多次,直到|M|<50为止。,n=260第1轮:,(26,M);此时|M|=52(52个中间元的集合)第2轮:,余下的2个元暂置一边。(5,M1);此时|M1|=10第3轮:(m←M1的第5元)

3.6次序统计 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ayst8776
  • 文件大小275 KB
  • 时间2019-01-14