树结构
二叉树:
比保存在左子树的任何键值都要大,比保存在右子树的任何键值都要小。父节点比子一代的左节点大,比子一代的右节点小。
在数据库中,查找n个学生中学生年龄为24的学生。不使用其他算法结构,逐一查找则需要查找n次。
使用二叉树生成一个年龄的二叉树索引,则只需要log n次查找。
注: 二叉树适于查找一个特定的值。
B+树:
在二叉树的基础上,在二叉树的最底层节点才保留信息(表中行的位置)。二叉数的节点只是为了在搜索中用来指引导正确的节点位置。
通过二叉来找到指定的一个边缘值,再通过后续节点依次找到另一个边缘值。
查找范围之间的5个数的时间复杂度为:log n + (5-1) n为表的所有行数。
注:
当表进行了增删及更新操作时,为更新索引,B+树需要自我调整,也就会减慢这些操作的执行。
哈希表:
一个哈希关键字对应一个哈希桶,哈希桶存放着经过哈希函数分类后的元素值。
比如哈希函数是元素对10取模,11,21放进哈希桶1;33,63放进哈希桶3.
时间复杂度关键在于 哈希函数。 好的哈希函数在哈希表里的搜索的时间复杂度为o(1);