九種查詢演算法
這個問題不能一概而論
如果有一種演算法優於其他演算法,那麼其他演算法就不存在了不是?
所以,要看在什麼情況下,那麼有這么幾個方面
背景數量級和匹配數量級,就是說你要在多少數據中查找多少數據。
背景數據差異度,背景數據如果包羅萬象,或者都是數字,那麼選擇的演算法區別就大了
背景數據整理程度。很多人在選擇查找演算法時不考慮這個,但是這在實際應用中很有異議,比如數據都排序過和沒有排序過,可想而知演算法的選擇有很大的不同。
匹配方式,是用「等於」 這種方式匹配,還是用like這種方式匹配,也對演算法有很大影響。
⑵ 幾種常見的查找演算法之比較
二分法平均查找效率是O(logn),但是需要數組是排序的。如果沒有排過序,就只好先用O(nlogn)的預處理為它排個序了。而且它的插入比較困難,經常需要移動整個數組,所以動態的情況下比較慢。
哈希查找理想的插入和查找效率是O(1),但條件是需要找到一個良好的散列函數,使得分配較為平均。另外,哈希表需要較大的空間,至少要比O(n)大幾倍,否則產生沖突的概率很高。
二叉排序樹查找也是O(logn)的,關鍵是插入值時需要做一些處理使得它較為平衡(否則容易出現輕重的不平衡,查找效率最壞會降到O(n)),而且寫起來稍微麻煩一些,具體的演算法你可以隨便找一本介紹數據結構的書看看。當然,如果你用的是c語言,直接利用它的庫類型map、multimap就可以了,它是用紅黑樹實現的,理論上插入、查找時間都是O(logn),很方便,不過一般會比自己實現的二叉平衡樹稍微慢一些。
⑶ 查找演算法有幾種,怎麼編程
大概有順序查找,二分查找,堆查找,二叉樹查找,散列查找等,老兄自己上網看看行嗎?我實在沒時間給你寫代碼,找本數據結構看看吧
⑷ 最好的查找演算法是什麼
沒有最好只有更好
對不同特徵的數據也有不同的查找演算法,所有的查找演算法都是針對某一特徵的數據進行優化的,比如用散列表查找很快的數據用二分發就不一定快,散列表用不同的哈希演算法查找性能也大不相同。
⑸ 數據結構中有哪些查找演算法
和二分查找性能接近的:既然可以二分查找,那麼關鍵字肯定可以滿足全序關系。那麼可以用二叉查找樹,一般的就是平攤O(logn),最壞O(n)。如果用平衡樹,如AVL,Treap,Splay等等,可以做到保持O(logn)的界。
比二分查找性能更優的:大概只有Hash了吧。如果Hash函數設計的好,基本可以認為是O(1)的。這個你最好系統學習一下,尤其是字元串的Hash函數。
⑹ 【數據結構】幾種重要的查找演算法。
恩你是要問什麼?
順序查找就是按順序查找,復雜度O(n)
二分查找的前提是數據是有序的 一次復雜度O(logn)
例如在數組 A: 1 3 5 7 8 10 12 中
如果要找 10
我們先看中間的數是 7, 10比7大,那麼繼續在右側二分尋找,這是一個遞歸的過程.
偽代碼:
bool find(int L,int R,int What_You_Want) {
if (L > R) return false;
int mid = (L + R) / 2
if (A[mid] == What_You_Want) return true;
else if (A[mid] > What_You_Want) return find(L,mid - 1,What_You_Want);
else return find(mid + 1, R, What_You_Want);
}
二叉搜索樹的原理與二分查找相同
⑺ 常見的搜索演算法有哪幾種
廣度優先搜索(BFS)
深度優先搜索(DFS)
爬山法(Hill Climbing)
最佳優先演算法(Best-first search strategy)
回溯法 (Backtracking)
分支限界演算法(Branch-and-bound Search Algorithm)
⑻ 查找演算法有哪些
查找演算法常用的有,順序查找,二分查找,哈希表查找,等等。
⑼ 查找演算法有哪兩種類型
二分查找又稱折半查找,它是一種效率較高的查找方法。
分塊查找又稱索引順序查找,它是順序查找的一種改進方法。
方法描述:將n個數據元素"按塊有序"劃分為m塊(m ≤ n)。每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小於第3塊中的任一元素,……。