查找算法
二分查找:
主要是利用了树查找的思想,所以时间复杂度为树的深度,树的深度性质:具有n个结点的完全二叉树的深度为[log2n] + 1,由此导出二分查找的时间复杂度为O(logn),最好的情况就是O(1),刚好就在mid位置
二叉排序树查找:
最好O(logn),当数据时有序状态,达到最差,称为斜树,所以最差时间复杂度为O(n)
哈希查找:
如果没有碰撞的时候,时间复杂度为O(1),当数字发生全部碰撞时,有最差时间复杂度为O(n)
树
二叉排序树
最好O(logn),当数据时有序状态,达到最差,称为斜树,所以最差时间复杂度为O(n)
平衡二叉树(AVL):
平衡二叉树,是一种二叉排序树,平衡是因为它的每一个结点的左子树和右子树的高度差至少等于1。
由于二叉排序树在非平衡状态时的时间复杂度是O(n),最好的时候就是O(logn),而平衡二叉树就是为了解决二叉排序树的非平衡而产生的忙所以它的查找,插入,删除的时间复杂度都为O(logn)
红黑树:
红黑树基于平衡二叉树,它是一个自平衡的二叉排序树,所以红黑树的时间复杂度也是为O(logn)
b-tree,b+tree:
b树的时间复杂度也是和树的深度有关,所以为O(logn),但是由于b树的一个节点可以有多个n个关键字,所以相同节点的b树,高度会比其它动态查找树低很多。
b树:http://www.tuicool.com/articles/fYz6jy