查詢演算法:在一系列資料中查詢某個資料是否存在。
一、順序查詢
邏輯:從頭到尾的遍歷,找到則回下標,找不到則返回-1。
時間複雜度:o(n)
二、二分查詢
邏輯:首先查詢的前提是被查詢的資料必須是有序的,然後找到中間位置資料,如果中間資料小了則從其後繼續查詢,如果大了則從其前半部分繼續查詢,然後重複該操作,直到找到,或者失敗。
時間複雜度:o(logn)
三、塊查詢
四、雜湊表查詢
邏輯:資料經過雜湊函式計算出資料在雜湊表中的位置,然後標記,方便之後的查詢,他的時間複雜度最快能到o(1)。但該演算法有很大的侷限性,不適合浮點型、字串型別的資料,需要額外的儲存空間,提高了空間複雜度,是一種典型的空間換取時間的演算法。
雜湊函式的設計方法:
1、直接定址法:把資料直接當做陣列的下標;
2、數字分析法:分析資料的特點來設計雜湊,常用的方法就是最大值與最小值,最大值-最小值+1來確定雜湊表的長度,資料-最小值訪問雜湊表。
3、平法取中法
4、摺疊法
5、隨機演算法
幾種查詢演算法的比較
1.堆的意義在於最快的找到最大最小值,在堆中插入乙個值,取走最大值或最小值重新構建堆結構,其時間複雜度為o log n 而其它方法至少為 o n 堆在實際中用途不在於排序,堆的應用 a.在於排程演算法中,比如優先順序排程,每次取優先順序最高的.b.可以採用堆構造優先順序佇列,優化dijstra 演算...
常用的幾種查詢演算法
給定乙個 n 個元素有序的 公升序 整型陣列 nums 和乙個目標值 target 寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 1。順序查詢也稱為線形查詢,屬於無序查詢演算法。從資料結構線形表的一端開始,順序掃瞄,依次將掃瞄到的結點關鍵字與給定值k相比較,若相等則...
幾種合併查詢演算法
問題 實際中需要知道拓撲圖中的2點是否連通,比如電路板 地圖中不同的城市等等,這種問題可以轉化為合併查詢問題,相應的求解可以用合併查詢演算法。基本思想是轉化為長度為n的陣列和已知m對連通對,其值表示了兩個點是否連通。合併查詢演算法 union find 可以有以下幾種 1 快速查詢演算法 mark連...