
Data Structure
文章平均质量分 78
jim_wei
这个作者很懒,什么都没留下…
展开
-
求最小的K个数 O(N) 一种实现-基于堆排序
题目要求:给出一组数(有n个),求出前k个最小的数:形式化描述如下:给出一组数:c1,c2,...,Cn的无序排列A,设c1算法思想:用给定排列的前k个数建最大堆,对于后面的n-k个数,逐个进行判断,Ai(K如果Ai说白了,就是开始时认为序列中的前k个数就是这k个最小数,然后通过判断剩余的数,看看是否比这k个数中最大的还小,若小则将其换出,这样到最后,被换出的数肯定比这k个数都大,所以,这k个数就是前k个最小数了;算法实现如下:template void printTheKthMins(T a[],in原创 2011-04-19 16:44:00 · 1666 阅读 · 0 评论 -
扩展堆栈(stack) O(1) 时间访问栈中最小值(或最大值)
<br />问题描述:扩展stack的实现,完成正常的push,pop操作,新增访问最小(或最大)元素的接口Min(),使得push,pop,Min的时间复杂度都是O(1)。<br />问题分析:拿到这道题,我们最先的思考往往是,设计一个算法从栈中拿到最小值,所以开始考虑任何可以用来实现该功能的排序和查找算法。假设栈中有n个元素,一切排序和查找都不可能实现O(1)的时间复杂度找到最小值。<br />再看题目,既然是扩展stack的实现,stack是一种数据结构,一种数据的组织方式,扩展它,也就允许我们对其数原创 2011-04-20 10:58:00 · 6456 阅读 · 0 评论