请问:求第K小元素的随机算法(Las Vegas算法)的时间复杂度?

broadarms 2009-10-23 10:41:34
找第k小元素的随机算法(Las Vegas算法):

在n个数中随机的找一个数A[i]=x, 然后将其余n-1个数与x比较,分别放入三个数组中: S1(元素均<x), S2(元素均=x), S3(元素均>x)。 若|S1|≥k 则调用Select(k,S1); 若(|S1|+|S2|)≥k,则第k小元素就是x; 否则就有(|S1|+|S2|)< k,此时调用Select(k-|S1|-|S2|,S3)。


问题:算法复杂度是多少?怎么算出来的?
多谢!!
...全文
481 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
swandragon 2009-10-23
  • 打赏
  • 举报
回复
这个不会算,数据结构没学好
C1053710211 2009-10-23
  • 打赏
  • 举报
回复
是线性期望的O(n)
证明过程很繁琐 推荐LZ看算法导论第9章9.2"以期望线性时间做选择"一节
有详细的证明

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧