11 2012 档案

摘要:本章讨论了堆堆有两个属性1,子节点大于或等于父节点 2,树中没有洞堆的特点是堆始终是平衡树,每个操作的复杂度都是ln(n),根节点总是最小的堆排序的代码:#pragma region heap int siftDown(int* buf,int pos,int len){ while(1) { int left=pos*2+1; int right=pos*2+2; int n; if(left>=len&&right>=len)break; else if(left>=len)n=right; e... 阅读全文
posted @ 2012-11-24 18:41 mightofcode 阅读(250) 评论(0) 推荐(0)
摘要:亚马逊上有一个关于<设计模式>这本书的评论,讲得很有道理,於我心有戚戚焉... well, it's over. "Patterns" have not revolutionized the world. Nor does this book need to be "studied" for deep insights.What it seems patterns are actually good for is giving common names to popular solutions to problems, to make 阅读全文
posted @ 2012-11-19 16:30 mightofcode 阅读(293) 评论(0) 推荐(0)
摘要:1,通过不断向intSet插入元素判断是否重复 stl::set使用二叉查找树,在当m=maxval时有最差情况2,增加个bool find(int t)?,想不到怎么再让它更强壮了3,无论是数组,链表,向量,insert要比find快一点点,但是都是同一个数量级的4,减少了函数调用的开销,这是巨大的优化,而且不会栈溢出5,一次分配,重复使用,类似的东西还有对象池,线程池等各种池6,此时数组,链表,位向量,桶会达到最优情况,二叉查找树会达到最差情况7,使用标记元素,插入时删除8,不大理解,怎么"同时在许多位上"进行并行操作?9,使用移位进行除法,这样每个桶都必须装2n个元素 阅读全文
posted @ 2012-11-13 17:32 mightofcode 阅读(207) 评论(0) 推荐(0)
摘要:本章讨论的问题:如何存储一组整数具体内容是:实现一个数据结构,能进行插入和按序输出几种实现:1,c++的set2,有序数组,必须首先知道最大空间,查找的效率是O(ln(n))插入的效率是O(n)3,有序链表,查找效率是O(n),插入为O(1),链表可以使用迭代进行搜索,也可以使用组分配进行优化,即预先分配一大块内存,而不是去申请许多小内存4,二分查找树,快速查找,快速插入,但是最坏情况下效率为O(n)View Code struct BTNode{ int n; BTNode* l; BTNode* r; BTNode(int _a) { l=r=N... 阅读全文
posted @ 2012-11-12 19:02 mightofcode 阅读(296) 评论(0) 推荐(0)
摘要:1 ,rand的返回值最大值是7fff 使用位操作产生大的随机值 View Code int bigRand(){ return rand()<<15&rand();}int rand(int l,int u){ int k=(rand()%3)<<30&(rand()<<15)&rand(); return l+k%(u-l+1);}2,随机选取0-n之间的一个i,取i,i+m-1共m个数,结果取模3,m<n/2时,从n取一个数,在集合中的概率小于1/2,因此取值次数的期望是2这里题目的描述并不严谨4,总共要取m次,集合的大小 阅读全文
posted @ 2012-11-11 21:09 mightofcode 阅读(529) 评论(1) 推荐(0)
摘要:话说c++11有正则了,在vs2010中有支持,在std里面就有,包含<regex>即可不过感觉没有c#里用的方便,而且没有@关键词写个正则得麻烦死声明正则用regex匹配结果用match_results<T>保存 typedef match_results<const char *> cmatch; typedef match_results<const wchar_t *> wcmatch; typedef match_results<string::const_iterator> smatch; typedef match_re 阅读全文
posted @ 2012-11-09 19:04 mightofcode 阅读(696) 评论(1) 推荐(1)
摘要:编程珠玑在11章讲了插入排序和快速排序,稍后的章节还讲了堆排序作者写了多个版本的快速排序,并进行了速度测试,但是最后都干不过stl::sort,stl::sort太给力了让我们来分析一下stl::sort的源码首先说明下测试代码#define ASIZE 10000000 int* buf=new int[ASIZE]; srand(10); for (int i=0;i<ASIZE;i++) { buf[i]=ASIZE-i; buf[i]=0; buf[i]=rand()*rand(); buf[i]=ran... 阅读全文
posted @ 2012-11-09 11:11 mightofcode 阅读(708) 评论(0) 推荐(1)