编程珠玑笔记-第13章习题
2012-11-13 17:32
148 查看
1,通过不断向intSet插入元素判断是否重复
stl::set使用二叉查找树,在当m=maxval时有最差情况
2,增加个bool find(int t)?,想不到怎么再让它更强壮了
3,无论是数组,链表,向量,insert要比find快一点点,但是都是同一个数量级的
4,减少了函数调用的开销,这是巨大的优化,而且不会栈溢出
5,一次分配,重复使用,类似的东西还有对象池,线程池等各种池
6,此时数组,链表,位向量,桶会达到最优情况,二叉查找树会达到最差情况
7,使用标记元素,插入时删除
8,不大理解,怎么"同时在许多位上"进行并行操作?
9,使用移位进行除法,这样每个桶都必须装2n个元素
10,没看懂题目
11,在基于集合的算法中,使用位向量+floyd的算法无疑是最快的
补充问题:spell程序
spell程序的作用是进行拼写检查,即检查某单词是否在词典中
首先,程序剥去前后缀,使75000个单词减少为30000个
然后,建立227位的散列表(合适的散列函数很重要),每个单词仅存储一位,总共有大概13000万位,但是只有3万个单词,这样单词已经相当稀疏了,某个单词不幸命中的概率为1/4000,也就是每4000个错误单词就会判断错一个,但是由于错误单词
出现的概率很低了,因此出错的概率可以接受,
最后,进行压缩,30000*27位有800k之多,压缩之后不到64k,而且存储了数百个单词的位置来加速查找,现在字典已经相当快了
不过具体是怎么压缩的?
stl::set使用二叉查找树,在当m=maxval时有最差情况
2,增加个bool find(int t)?,想不到怎么再让它更强壮了
3,无论是数组,链表,向量,insert要比find快一点点,但是都是同一个数量级的
4,减少了函数调用的开销,这是巨大的优化,而且不会栈溢出
5,一次分配,重复使用,类似的东西还有对象池,线程池等各种池
6,此时数组,链表,位向量,桶会达到最优情况,二叉查找树会达到最差情况
7,使用标记元素,插入时删除
8,不大理解,怎么"同时在许多位上"进行并行操作?
9,使用移位进行除法,这样每个桶都必须装2n个元素
10,没看懂题目
11,在基于集合的算法中,使用位向量+floyd的算法无疑是最快的
补充问题:spell程序
spell程序的作用是进行拼写检查,即检查某单词是否在词典中
首先,程序剥去前后缀,使75000个单词减少为30000个
然后,建立227位的散列表(合适的散列函数很重要),每个单词仅存储一位,总共有大概13000万位,但是只有3万个单词,这样单词已经相当稀疏了,某个单词不幸命中的概率为1/4000,也就是每4000个错误单词就会判断错一个,但是由于错误单词
出现的概率很低了,因此出错的概率可以接受,
最后,进行压缩,30000*27位有800k之多,压缩之后不到64k,而且存储了数百个单词的位置来加速查找,现在字典已经相当快了
不过具体是怎么压缩的?
相关文章推荐
- 编程珠玑【学习笔记】:习题 编程珠玑2nd 3.7 第五题
- 编程珠玑--------第三章习题笔记
- 编程珠玑笔记-第12章习题
- 编程珠玑--------第五章习题笔记
- 编程珠玑--------第四章习题笔记
- 编程珠玑之第二章习题8
- 编程珠玑 读书笔记 求最大的子串和
- 编程珠玑之第三章习题7
- 编程珠玑之第二章习题1
- 编程珠玑 第二章 习题5
- 编程珠玑之第一章习题3:度量100w整数排序的运行时间
- python核心编程学习笔记-2016-08-03-01-习题9-9
- python核心编程学习笔记-2016-08-05-01-习题9-19
- 编程珠玑之第三章习题8
- 编程珠玑之第二章习题4
- 编程珠玑之第二章习题7
- 关于编程珠玑中习题2.3的一点思考
- 编程珠玑 笔记
- 关于编程珠玑中习题2.3的一点思考
- 编程珠玑 第一章习题解答