3.5 应用


3.5.1 符号表的选择

  • 散列表:对比BST,散列表代码简单,查找时间最优
  • BST:抽象结构简单,无需设计散列函数
  • 红黑树:可以保证最坏情况的性能
  • 一般情况下,不考虑有效操作,首先选择散列表,其次才是红黑树

符号表渐进性能总结

算法 最坏查找 最坏插入 平均查找命中 平均插入
顺序查找(无序链表) N N N/2 N
二分查找(有序数组) lgN N lgN N/2
BST N N 1.39lgN 1.39lgN
红黑树 2lgN 2lgN 1.00lgN 1.00lgN
拉链法 <lgN <lgN N/(2M) N/M
线性探测法 clgN clgN <1.5 <2.5

3.5.1.3 Java标准库

Java的TreeMap和HashMap分别是基于红黑树和拉链法散列表的符号表