zoukankan      html  css  js  c++  java
  • 编程珠玑笔记第13章习题

    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,而且存储了数百个单词的位置来加速查找,现在字典已经相当快了

    不过具体是怎么压缩的?

  • 相关阅读:
    Cesium视角
    Cesium删除特定的实体
    cesium之CLAMPED
    JavaScript:使用setAttribute()改变网页中标签的onclick属性
    atoi()函数及其实现
    寻找数组中的第二大数
    字符串函数之strcpy
    互换两个变量(不使用中间变量)
    寻找兄弟单词(2012.5.6百度实习)
    大数据量的存储分表常见算法(转)
  • 原文地址:https://www.cnblogs.com/mightofcode/p/2768400.html
Copyright © 2011-2022 走看看