算法导论
guosong421
计算机研究生
展开
-
堆排序
今天看了第六章的堆排序,故将其用C++实现,具体代码如下:Heap.h #pragma onceclass CHeap{public: CHeap(int * p = NULL,int n = 0); CHeap(const CHeap&); CHeap& operator= (const CHeap&); void Max_Heaprity(int index,co原创 2009-10-25 22:21:00 · 364 阅读 · 0 评论 -
编程珠玑 第二章 算法
本章一开始提出了三个问题:A、给定一个最多包含40亿个随机排列的32为整数的顺序文件,找出一个不存在文件中的32位整数(在文件中至少缺失一个这样的数——为什么?)。在具有足够内存的情况下,如何解决该问题?如何有几个外部的“临时”文件可用,但是仅有几百字节的内存,又该如何解决问题?问题解析: 该问题包含三个子问题。 1.在文件中至少缺失一个这样的数?为什么呢?这是原创 2010-04-19 19:09:00 · 1278 阅读 · 1 评论 -
《编程珠玑》 第二章 算法 习题
原题:给定一个n元实数集合、一个实数t和一个整数k,如何快速确定是否存在一个k元子集合,其元素之和不超过t?一开始一点思路也没有。看了答案提示:考虑集合中k个最小元素的之和。什么意思呢?假设k个最小元素之和是minsk,若minsk>t,则不存在任何k元子集,其元素之和若minsk这就引出另一个问题,怎么求n元集合中k最小元素的子集呢?方法一: 对n元集合进行由小到大的排序原创 2010-04-22 19:46:00 · 1545 阅读 · 0 评论