找出第K大数(前K大数)的类快排思想总结...
来源:互联网 发布:sql中自定义变量 编辑:程序博客网 时间:2024/04/30 15:19
找出第k大的数字
利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况:
1. Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数;
2. Sa中元素的个数大于等于k,则返回Sa中的第k大数。时间复杂度近似为O(n)
找出前K大数:
快速排序大家大家都不陌生了。主要思想是找一个“轴”节点,将数列交换变成两部分,一部分全都小于等于“轴”,另一部分全都大于等于“轴”,然后对两部分 递归处理。其平均时间复杂度是O(NlogN)。从中可以受到启发,如果我们选择的轴使得交换完的“较大”那一部分的数的个数j正好是n,不也就完成了在 N个数中寻找n个最大的数的任务吗?当然,轴也许不能选得这么恰好。可以这么分析,如果j>n,则最大的n个数肯定在这j个数中,则问题变成在这j 个数中找出n个最大的数;否则如果j<n,则这j个数肯定是n个最大的数的一部分,而剩下的j-n个数在小于等于轴的那一部分中,同样可递归处理。
令人愉悦的是,这个算法的平均复杂度是O(N)的。
- 找出第K大数(前K大数)的类快排思想总结...
- 快排划分思想的应用-求第k大数或者第k小的数(求前k大数或者前k小的数)
- 快排思想 求第(前)k大数
- 第(前)k大数问题
- 第(前)k大数问题
- 第(前)k大数问题
- 海量数据中找出前k大数(topk问题)
- 海量数据中找出前k大数(topk问题)
- 海量数据中找出前k大数(topk问题)
- 寻找第k大数(快排思想)
- //第二大数(第k大数)
- 寻找前K大数
- 第K大数的位置...
- 求第k大数
- 第K大数问题
- 寻找第k大数
- 区间第K大数
- zcmu1540 第k大数
- OpenGL Vertex Array【转】
- 一种基于代理CGI技术的跨域永久性解决方案
- 用Debug函数实现API函数的跟踪(1)
- 数组归并排序
- 分析一个JS面试题
- 找出第K大数(前K大数)的类快排思想总结...
- Oracle数据库服务启动后又停止了错误
- 用Debug函数实现API函数的跟踪(2)
- poj3356
- Duff's device神奇的switch
- 2010长沙的夏天
- 《Windows核心编程》のWindows时间
- 线程数量控制
- OpenGL Tessellation【转】