
数据结构与算法
文章平均质量分 71
beiyouyu
关注搜索与推荐算法、存储/计算、机器学习
展开
-
压缩的学习1
0. 为什么需要压缩? 数据存储的需要:像google、baidu这样的搜索引擎公司,需要大量的存储设备来保存spider down的网页;如果不压缩的话,呵呵,结果可想而知。 网络传输的需要:传输1T的数据与传输100GB的数据相比,所耗的时间显而易见。1. 为什么可以压缩? 数据的原创 2009-03-22 20:47:00 · 763 阅读 · 0 评论 -
=引发的错误
问题#include using namespace std;bool Gt(const int &a, const int &b) { return a >= b; }int num[100];int main(){ num[0] = 100; num[1] = 100; num[3] = 10; sort(num, num+3原创 2011-11-15 15:58:26 · 500 阅读 · 0 评论 -
【算法与数据结构】不相交集合——并查集
来自coursera的课程:普林斯顿大学的算法。通俗地讲,在一堆item上进行两种操作,一是合并,即将某两个item所在的集合合并为一个大集合;二是查询,即给定的两个item是否属于同一个集合。高效快速地支持这种操作的数据结构就是并查集。先看数学原理:等价关系与等价类从数学上看,等价类是一个对象(或成员)的集合,在此集合中的所有对象应满足等价关系原创 2012-08-13 13:18:40 · 4162 阅读 · 0 评论 -
【算法与数据结构】三分查找
一. 概念在二分查找的基础上,在右区间(或左区间)再进行一次二分,这样的查找算法称为三分查找,也就是三分法。三分查找通常用来迅速确定最值。二分查找所面向的搜索序列的要求是:具有单调性(不一定严格单调);没有单调性的序列不是使用二分查找。与二分查找不同的是,三分法所面向的搜索序列的要求是:序列为一个凸性函数。通俗来讲,就是该序列必须有一个最大值(或最小值),在最大值(最小值)原创 2012-08-18 09:36:28 · 14316 阅读 · 0 评论 -
[微软面试100题] memmove
题目用C 语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove 函数的功能是拷贝src 所指的内存内容前n 个字节到dest 所指的地址上。代码void * memmove(void *dest, const void *src, size_t n){ if (dest==NULL || s原创 2012-12-04 17:24:53 · 4066 阅读 · 0 评论 -
[微软面试100题] 二元查找数变成有序的双向链表
题目输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表。要求:不能创建任何新的节点,只能调整指针的指向。例如: 10 / \ 6 14 / \ / \4 8 12 16转换后的结果为 4--6--8--10--12--14--16struct BSTreeNo原创 2012-12-04 14:38:56 · 4326 阅读 · 0 评论 -
[微软面试100题] 设计包含min函数的栈
题目定义栈的数据结构,要求添加一个 min函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。分析栈是LIFO的队列,当一个新元素入栈时,栈的最小值状态是已经确定的,这时只需比较新元素与最小值的大小,并将新的最小值记录在该元素上。显然,只用在标准的栈实现上,为每个元素加入一个伴随值min。代码class Stac原创 2012-12-04 14:54:44 · 3970 阅读 · 0 评论