您好、欢迎来到现金彩票网!
当前位置:秒速时时彩开奖 > 算法正确性 >

【比较难写的算法】最坏情况线性时间的选择

发布时间:2019-06-07 06:57 来源:未知 编辑:admin

  写一个从数组中选出第k小的元素的函数Select,要求最坏情况使用线性时间O(n)。《算法导论》里的描述如下1。将输入数组分为n/5个组,每组5个元素,至多1组剩下nmod5个元素。2。寻找n/5...

  写一个从数组中选出第k小的元素的函数Select,要求最坏情况使用线性时间O(n)。

  1。将输入数组分为n/5个组,每组5个元素,至多1组剩下n mod 5 个元素。

  2。寻找n/5个组中每一个组的中位数,首先对每个组的元素进行插入排序,然后从排序过的序列中选出中位数。

  3。对第二步中得到的n/5个中位数,递归调用Select以找出其中位数x

  4。利用修改过的partition过程,按中位数x对输入数组进行划分。让k比划分低区的元素数目多1,所以x是第k小的元素,并且有n-k个元素划分在高区。

  5。如果i=k,则返回x。如果ik,则在低区递归调用Select以找出第i小的元素。如果ik,则在高区找第(i-k)个最小元素。

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部实际上比平均情况下线性时间的选择要复杂很多(算法导论上伪代码都没有)问题是快速排序要求枢纽元在最后一个,如果采用hoare的划分算法,就没有这个要求。而给出的是枢纽元的值,然后要找到位置(搜索一遍),再交换。如果采用hoare划分法,不用搜索,不过算法和书上描述的就稍有不同了。另外,因为代码复杂,所以对于随机输入,此算法较慢

http://homeschoolwwh.com/suanfazhengquexing/215.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有