原文:在 n 个数当中找第k小元素 (BFPRT算法,最坏情况为线性时间的选择问题)

题目描述 问题描述: 在 n 个数当中找第k小元素。 输入: 第一行输入n的值,第二行输入n个数,第三行输入k的值。 输出: n 个数中的第k小元素。 要求: 你的算法最坏情况下应该在线性时间内完成。 示例 : 输入: 输出: 示例 : 输入: 输出: 思路分析 对于常规解法,我们随机在数组中选择一个数作为划分值 pivot ,然后进行快排的partation过程 将小于pivot的数放到数组左 ...

2020-11-04 23:26 0 420 推荐指数:

查看详情

最坏情况线性时间选择算法

算法select可以确认一个有n>1个不同元素的输入数组中第i元素。(如果n=1,则select只返回它的唯一输入数值作为第i元素。) 1.将输入数组的n元素划分为n/5(向下取整)组,每组5个元素,则至多只有一组由剩下的n mod 5个元素组成。 2.寻找这n/5(向上取整 ...

Sat Sep 02 22:59:00 CST 2017 0 1194
算法线性时间选择最坏情况下)

线性时间选择(Linear Select):这个名字不太好理解,什么叫线性时间选择?一句话,在线性时间内完成选择。一般情况下是这样的,我们想要找出一个数组中的最大值或最小值,那就只需要一次排列,然后输出第一个或最后一个元素就行了,但如果是要找出一个数组中的第k元素呢?   在一般情况 ...

Wed Apr 09 20:45:00 CST 2014 0 6751
k大数,最坏时间复杂度O(n)

(转载请注明出处,http://www.cnblogs.com/fangpei/p/3538331.html ) 以前写过的一篇,搬过来。 上算法课的时候听到老师讲这个问题,觉得还是蛮有意思的。已知数组A,找出A[m]...A[p]中的第k大值 ...

Thu Feb 06 00:54:00 CST 2014 0 7488
查找第K的数 BFPRT算法

出处 http://blog.csdn.net/adong76/article/details/10071297 BFPRT算法是解决从n个数选择k大或第k的数这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度 ...

Fri Jan 01 06:16:00 CST 2016 0 8327
线性查找算法(BFPRT)

BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan)。 BFPRT解决的问题十分经典,即从某n元素的序列中选出第k大(第k)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。 步骤 将n元素 ...

Fri Nov 03 19:25:00 CST 2017 0 1506
线性时间选择算法

在一个由 n元素组成的集合中,第 i 个顺序统计量(order statistic)是该集合中第 i 元素。也就是说,最小值是第 1 个顺序统计量(i = 1),最大值是第 n 个顺序统计量(i = n)。 中位数(median)是它所在集合的中点元素。当 n 为奇数时,中位数是唯一 ...

Thu Jul 24 06:42:00 CST 2014 1 5974
线性时间选择算法

线性时间选择算法 顾名思义,“线性时间选择”就是“选择问题”的“线性时间算法。 1. 选择问题 元素选择问题:给定一个能够线性排序的集合(该集合中有 n元素)和 一个整数 k(\(1 \le k \le n\)) ,找出这 n元素中第 k 元素时间下界 ...

Tue Mar 24 07:08:00 CST 2020 2 4840
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM