1. 程式人生 > >查詢演算法和樹歸納

查詢演算法和樹歸納

查詢演算法

  • 二分查詢:

主要是利用了樹查詢的思想,所以時間複雜度為樹的深度,樹的深度性質:具有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