b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

在N个元素中查找第k大的元素,有什么方法最快?

电脑杂谈  发布时间:2019-06-26 22:07:35  来源:网络整理

树与二叉树的区别_二叉排序树的遍历_二叉排序树的建立

lwjwj1314lwjwj131412-05 14:18

等级Bbs13楼

难道需要将N个元素完全排序成功后才完吗?

lintcode在数组中找到第k大的元素(快速排序)

csucdlcsucdl12-05 14:29

等级Bbs54楼

用划分partition可以实现,这也是选择排序的实现思想

//在数组A[left],...A[right]中找第k小元素s并把它放在位置left+k;

voidSelect(intA[],intleft,intright,intk)

{

intm=0;

intr=0;

intj=0;

m=left;

r=right+1;

while(true)

{

j=r;

j=Partition(A,m,j);//返回j,它使得A[j]是第j小的值

if(k==(j-left))

{

return;

}

elseif(k<(j-left))

{

r=j;

}

else

{

m=j+1;

}

}

return;

}

intPartition(intA[],intleft,intright)

{

inti=0;

intk=0;

intv=0;

i=left;

k=right;

v=A[left];

while(true)

{

do

{

i++;

}while(A[i]<v&&i<right);

do

{

k--;

树与二叉树的区别_二叉排序树的建立_二叉排序树的遍历

}while(A[k]>v&&k>left);

if(i<k)

{

InterChange(A[i],A[k]);//交换

}

else

{

break;

}

}

A[left]=A[k];

A[k]=v;

returnk;

}

select的平均计算时间O(n).

当然还有一种最坏情况下时间为O(n).的select算法

找出二叉搜索树中第k小的元素(Java)

rockefeller8rockefeller812-05 14:30

等级Bbs25楼

如果只想找第K大的元素,则不一定要排序。设置一个指针,和一个计数器,按照遍历所有元素的思路,找到第K个大元素。(具体遍历方法看你要处理的数据有什么样的特点。)

给出一个分治算法来找出n个元素序列中第2大的元素

foxdengfoxdeng12-05 14:31

等级Bbs26楼

有意思,你不进行排序,怎么知道是第k大?

你跟别人之间不互通年龄,能确定彼此的大小关系吗?

[LeetCode题解]从两个有序数组的并集中寻找第k小元素

cdocdo12-05 15:09

等级Bbs27楼

快速排序的同时与K值进行比较。

无序序列中O(n)时间复杂度寻找最小(最大)的K个数

sanktsankt12-05 15:20

等级Bbs68楼

堆排序是最快的

用建大堆的思想

查找第K个元素

cunshcunsh12-05 15:20

等级Bbs69楼

如果要在100000000个数中找第2大的元素呢.

排序(下):如何用快排思想在O(n)内查找第K大元素?

sanktsankt12-05 15:21

等级Bbs610楼

堆排序可以快速找出前面k个较大的数,而不用完全排序

java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素

healer_kxhealer_kx12-05 15:23

等级Bbs811楼

我认为排序是一定的.问题在于如何排序了.

[LeetCode]215 数组第k大的数

YouthllenYouthllen12-05 19:20

等级Bbs112楼

同意堆排序,但堆排序建初堆要时间。

如果是我,会选择冒泡法,冒泡k次即可,不用全部排序

二叉排序树的遍历_二叉排序树的建立_树与二叉树的区别

用priority_queue实现找出数组中前K个大的元素

csucdlcsucdl12-05 20:14

等级Bbs513楼

同意foxdeng(江洋大刀)的逻辑

只要有大小区别,那么就得通过比较来确定

寻找数组中第k小的数:平均情况下时间复杂度为O(n)的快速选择算法

lovefreexlovefreex12-05 20:32

等级Bbs214楼

我觉得要根据元素的个数来决定用哪种排序方式,如果个数较大,快速排序应该比较理想

一颗二叉搜索树,找出树中的第k大节点

xilixili12-06 00:39

等级Bbs215楼

stl的有个算法就是做这个的

在两个有序链表中查找第K大元素。

ahatonyahatony12-06 01:05

等级Bbs116楼

RE:csucdl(csucdl)

------------------------

赞成,这题其实是不用完全排序的,使用选择排序的方法能够解决问题

相比排序的O(logn),这种算法的复杂度为大theta(n)(那个希腊字母打不出来,用音代替了)

其实这个问题可以理解为,将要查找的数固定好一个范围之后,就可以抛弃剩下的数了。

利用快排寻找数组中第k个最大元素

henan_lujunhenan_lujun12-06 08:26

等级Bbs417楼

此外,sse4指令集还加入了串流式负载指令二叉排序树的建立,能够提升帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64bit而非8bit,并可以将其保存在临时缓冲区内,让支持sse4指令集的读取频宽效能提升最高至8倍。[思路点拨]排数问题和站队问题是排列、组合中的两类典型问题,其解决的思路相似,需考虑特殊元素、特殊位置、相邻问题、不相邻问题等的处理方法.[精解详析](1)分步完成:第一步,在4个偶数中取3个,可有c种情况。[思路点拨]排数问题和站队问题是排列、组合中的两类典型问题其解决的思路相似需考虑特殊元素、特殊位置、相邻问题、不相邻问题等的处理方法.[精解详析](1)分步完成:第一步在4个偶数中取3个可有c种情况。

寻找二叉树的第k大节点

foreversoftforeversoft12-06 12:04

等级Bbs118楼

装入datatable利用select方法里的sort不是蛮好

LintCode笔记(12)——第k大元素

rockefeller8rockefeller812-06 12:36

等级Bbs219楼

楼上的“回复人:foxdeng(江洋大刀)()信誉:100有意思,你不进行排序,怎么知道是第k大?你跟别人之间不互通年龄,能确定彼此的大小关系吗?”

简单举个例子:如果想找第K大的二叉排序树的建立,也来先逐个排序,然后再给出最大的那个元素,是不是效率太低呀?本题的目的只是找到第K大,不需要其后的信息。至于什么样的算法最快,要依据数据的特点来定,可以对数据进行先期的处理,使得具备某种规律,然后再定算法。

java实现通过快速排序来查找数组中第n大的元素

rockefeller8rockefeller812-06 12:38

等级Bbs220楼

上面改一下:“如果想找第1大的......”,原因笔误!

用堆排序实现查找最小的K个元素 java

rockefeller8rockefeller812-06 12:43

等级Bbs221楼

如果数据较少,有限范围,先期数据处理得好,我认为哈希函数处理最快,^_^当然能不能采用哈希函数,还要看数据的特点。

python--查找数组第K大的数

yuanchuangyuanchuang12-06 12:43

等级Bbs522楼

没时间看,Mark

大顶堆,n个数中找最小的k个数

rockefeller8rockefeller812-06 12:49

等级Bbs223楼

再说点,排序与找出第K大的元素是两个完全不同的概念。简单的说,排序需要对数据进行位置或指向的重排,而查找则不需要对元素位置或指向重排。

若干个(大量)数字中找前K大/小的元素--数值型

二叉排序树的遍历_树与二叉树的区别_二叉排序树的建立

cyberHunKcyberHunK12-06 13:02

等级Bbs524楼

rockefeller8(洛克菲勒)言之有理!

二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为o(n).但二分查找算法则更优,因为其查找时间为o(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:。 许多算法,比如排序,查找,要求对容器中的元素进行比较,所以,放入容器的对象所属的类,还应该实现==和 <运算符。 函数对象 算法 stl算法本身是一种函数模版 通过迭代器获得输入数据 通过函数对象对数据进行处理 通过迭代器将结果输出 stl算法是通用的,独立于具体的数据类型、容器类型 stl算法分类 不可变序列算法 可变序列算法 排序和搜索算法 数值算法 * 算 法 不可变序列算法 不可变序列算法 不直接修改所操作的容器内容的算法 用于查找指定元素、比较两个序列是否相等、对元素进行计数等 例: template class inputiterator, class unarypredicate inputiterator find_if inputiterator first, inputiterator last, unarypredicate pred 。

分治法实验-寻找第k小元素

DesertStormDesertStorm12-06 13:46

等级Bbs225楼

同意sankt(黄景天)的观点,这个问题应该用“类似”“堆排序”的方法。

这个问题最直观的解决是先找最大的,再找第二大,……找到第K大的。(即“选择排序”的一部分)

而选择排序的优化方法就是堆排序,只不过每次建完堆以后,要多做一个数字个数的统计和比较。但无论怎么样,堆的一侧肯定不需要继续排序的,肯定比“选择”要快。

其他所有的排序方法(除了冒泡),都要把所有的数字排序,显然不是最好的。

【算法-快速排序】第k大元素(Kth Largest Element)

SolsticeSolstice12-06 13:46

等级Bbs526楼

同意csucdl,也可用STL算法nth_element()。

从海量数值中找出最大的N个元素的算法实现

azsazs12-06 13:51

等级Bbs227楼

楼上的别挺了!

这似乎不是查找问题吧!!!!

除非已经知道了第K元素的值,这才叫查找!

如果你确定了第K元素的值,似乎也就解决了楼主的问题!

楼主,这样理解对不对?

找出N个元素的数组中最大的K个数

DesertStormDesertStorm12-06 14:03

等级Bbs228楼

恩,应该是堆的方法没错了。

最好的情况下,你选择建堆的基数正好是第K大的数,那么N次比较就搞定。还有什么方法能比这个快??

在N个乱序数字中查找第K大的数字

azsazs12-06 14:38

等级Bbs229楼

1、取前k个元素排好序,置于一个缓冲区dst[k]内

2、for(i=k;i<n;i++)

{

用src[k]为值在dst[]内二分查找,大于最小值就插入,挤出原来的最小值

保持dst[]内只有k个值

}

3、dst[k-1]即为所求

算法复杂度:

最差情况:O((n-k)*log(k)*k+k*k)

平均情况:自己算吧

由此我们可知,k很重要,因此,如果2k>n时,就应该按第(n-k)小值来查找(挤出大值)

【leetcode】——从两个有序数组中寻找他们并集的第k小元素

azsazs12-06 14:40

等级Bbs230楼

空间复杂度为k或n-k

线性时间内从一个数组中找出第K个最小的元素

azsazs12-06 14:55

等级Bbs231楼

有错误,整理一下

1、取前k个元素排好序,置于一个缓冲区dst[k]内

树与二叉树的区别_二叉排序树的建立_二叉排序树的遍历

2、for(i=k;i<n;i++)

{

用src[i]为值在dst[]内二分查找,大于最小值就插入,挤出原来的最小值

保持dst[]内只有k个值

}

3、dst[k-1]即为所求

算法复杂度:

最差情况:O((n-k)*log(k)*k+k*k)

平均情况:自己算吧

最好情况:自己算吧

空间复杂度为k

如果2k>n,就按第(n-k)小值方向查找(挤出大值)

令k=n-k;

1、取前k个元素排好序,置于一个缓冲区dst[k]内

2、for(i=k;i<n;i++)

{

用src[i]为值在dst[]内二分查找,小于最大值就插入,挤出原来的最大值

保持dst[]内只有k个值

}

3、dst[0]即为所求

面试题:从n个数中找出第K大的数

DesertStormDesertStorm12-06 15:04

等级Bbs232楼

azs大侠,

您的算法要搬运数据的次数算了吗?

数组中的第K个最大元素 【LeetCode 排序】

vc_asmvc_asm12-06 15:13

等级Bbs133楼

憨豆的物防道具升级优先选择(奶白色弹珠+生命值+物防+法抗+法力值),法抗道具升级优先选择(剔透萝卜片=生命值+生命恢复+物防+法抗),恢复道具升级优先选择(反光锡箔纸=生命值+生命恢复+攻击),当然感觉防御还是不够,可以继续出(天牛甲=生命值+物防+法抗),对面法系多可以出那个(荆棘之刺+法抗+攻击+忽略),最后一个可以随意出个攻击或者防御的,建议出攻击,因为之前3-4个道具出完的话,敌人基本已经打不动你了,而且回血还快,打掉的不如回的多undefined。sqlite3_create_collation() 函数用来声明一个排序序列和实现它的比较函数. 比较函数只能用来做文本的比较. etextrep 参数可以取如下的预定义值 sqlite_utf8, sqlite_utf16le, sqlite_utf16be, sqlite_any,用来表示比较函数所处理的文本的编码方式. 同一个自定义的排序规则的同一个比较函数可以有 utf-8, utf-16le 和 utf-16be 等多个编码的版本. sqlite3_create_collation16()和sqlite3_create_collation() 的区别也仅仅在于排序名称的编码是 utf-16 还是 utf-8.。不 懂 得 官 子 的 计 算 方 法 ,就 无 法 判 断 出 每 一 手 棋 的 价 值 ,就 不 可 能 得 出 每 一 手 棋 的 大 小 标 准 ,因 此 , 研 究 并 掌 握 了 官 子 计 算 方 法 后 , 才 能 培 养 出 真 正 的 大 局 观 。

查找无序序列中第i小的元素

vc_asmvc_asm12-06 15:15

等级Bbs134楼

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我建议:n值小,用选择法选出第n大值比较快,n值大,用选择法选出第(N-n)小值比较快,至于n不大也不小,那么。。。。你们看着办吧,也许修改一下堆排序算法会比较适合,或者修改一下快速排序算法吧,只要你有时间,觉的值的花这个精力

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决寻找第K小元素问题——三种不同的算法实现

jordan1jordan112-06 16:17

等级Bbs235楼

学习

【算法】在N个乱序数字中查找第K大的数字

codeartscodearts12-06 17:46

等级Bbs436楼

>在N个元素中查找第k大的元素,有什么方法最快?

假如只查找一次,想必直接一个一个地找是比较快的,时间复杂度:O(n),排序怎么着也得:o(log2N)

选择问题——选出第K个最大的元素

lxb365lxb36512-06 18:33

等级Bbs237楼

这个问题是用快速排序思想解决的典型问题,也就是用递归的办法。

面试题—— 找出一个无序整型数组中第k大的数。

pinelindapinelinda12-08 14:47

等级Bbs138楼

用冒泡吧,在排的过程中就找到了,或者根据情况也可以倒着冒

【28】一个无序的序列查找第K大的数


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-108656-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 茶韵
        茶韵

        最起码也要先了解该产品的性质

      热点图片
      拼命载入中...