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都很大时,这种算法比前两种算法要快很多。
查看全文
相关阅读:
UVA 11925 Generating Permutations 生成排列 (序列)
UVA 1611 Crane 起重机 (子问题)
UVA 11572 Unique snowflakes (滑窗)
UVA 177 PaperFolding 折纸痕 (分形,递归)
UVA 11491 Erasing and Winning 奖品的价值 (贪心)
UVA1610 PartyGame 聚会游戏(细节题)
UVA 1149 Bin Packing 装箱(贪心)
topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
UVA 1442 Cave 洞穴 (贪心+扫描)
UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
原文地址:https://www.cnblogs.com/timesdaughter/p/6533094.html
最新文章
(96)Wangdao.com_第二十九天_表单事件
(95)Wangdao.com_第二十八天_进度事件
(94)Wangdao.com_第二十七天_键盘事件
(93)Wangdao.com_第二十六天_鼠标事件
Zepto.js_开始
剑指Offer-28.数组中出现次数超过一半的数字(C++/Java)
剑指Offer-27.字符串的排列(C++/Java)
剑指Offer-26.二叉搜索树与双向链表(C++/Java)
剑指Offer-25.复杂链表的复制(C++/Java)
剑指Offer-24.二叉树中和为某一值的路径(C++/Java)
热门文章
剑指Offer-23.二叉搜索树的后序遍历序列(C++/Java)
剑指Offer-22.从上往下打印二叉树(C++/Java)
剑指Offer-21.栈的压入、弹出序列(C++/Java)
剑指Offer-20.包含min函数的栈(C++/Java)
剑指Offer-19.顺时针打印矩阵(C++/Java)
UVA 1153 Keep the Customer Satisfied 顾客是上帝(贪心)
codeforce Gym 100685F Flood (topo排序)
codeforce Gym 100685E Epic Fail of a Genie(MaximumProduction 贪心)
UVA 1614
UVA 1613 K-Graph Oddity K度图着色 (构造)
Copyright © 2011-2022 走看看