查找算法

http://www.javashuo.com/article/p-hyumxmrv-br.html

順序查找

  • 順序查找也稱爲線形查找,屬於無序查找算法。
  • 時間複雜度爲O(n);

二分查找

  • 元素必須是有序的,若是是無序的則要先進行排序操做。
  • 也稱折半查找,屬於有序查找算法。
  • 複雜度分析:
    • 最壞狀況下,關鍵詞比較次數爲log2(n+1),
    • 且指望時間複雜度爲O(log2n);

插值查找

  • 基於二分查找算法,
    • 將查找點的選擇改進爲自適應選擇,能夠提升查找效率。
    • 找最大值最小值的中間值
    • 均勻分佈效率高
  • 固然,插值查找也屬於有序查找。
  • 複雜度分析:
    • 查找成功或者失敗的時間複雜度均爲O(log2(log2n))。

斐波那契查找

  • 二分查找的一種提高算法,
    • 經過運用黃金比例的概念在數列中選擇查找點進行查找,提升查找效率。
  • 一樣地,斐波那契查找也屬於一種有序查找算法。

樹表查找

  • 二叉查找樹是先對待查找的數據進行生成樹,
  • 確保樹的左分支的值小於右分支的值,
  • 而後在就行和每一個節點的父節點比較大小,查找最適合的範圍

分塊查找

  • 又稱索引順序查找,它是順序查找的一種改進方法
  • 將n個數據元素"按塊有序"劃分爲m塊(m ≤ n)。

 哈希查找

  • 時間複雜度爲O(1)
相關文章
相關標籤/搜索