zoukankan
html css js c++ java
从n个数中找出最小的k个数(n >> k),最优平均时间复杂度是?
1.先直接排序,再取排序后数据的前k个数。排序算法用最快的堆排序,复杂度也会达到O(N*logN)。当k接近于N时,可以用这种算法。
2.先排序前k个数,对于后面N-k个数,依次进行插入。时间复杂度为O(k*n)。当k很小时,可以用这种算法。
3.对前k个数,建立最大堆,对于后面N-k个数,依次和最大堆的最大数比较,如果小于最大数,则替换最大数,并重新建立最大堆。时间复杂度为O(N*logk)。当k和N都很大时,这种算法比前两种算法要快很多。
查看全文
相关阅读:
9.堆排序
8.全排列
37.微信跳一跳辅助开发(C语言+EasyX)
7.图形化实现快速排序法
codeforces 632A A. Grandma Laura and Apples(暴力)
codeforces 633D D. Fibonacci-ish(dfs+暴力+map)
codeforces 633B B. A Trivial Problem(数论)
codeforces 633A A. Ebony and Ivory(暴力)
codeforces 622B B. The Time
codeforces 622D D. Optimal Number Permutation(找规律)
原文地址:https://www.cnblogs.com/timesdaughter/p/6533094.html
最新文章
线索二叉树
优先级队列
在二元树中找出和为某一值的所有路径
定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
poj3667Hotel
poj3667Hotel
bsgs(数论)
bzoj1101 [POI2007]Zap
bzoj1101 [POI2007]Zap
AC自动机总结
热门文章
poj1279Art Gallery
poj1279Art Gallery
bzoj1835基站选址(dp+线段树)
bzoj1835基站选址(dp+线段树)
40.多线程实现矩阵相乘
39.C语言操作数据库
38.C语言字符串总结
10.调用函数,快速排序法
3.cocos代码入口
37.cgi网页交互
Copyright © 2011-2022 走看看