演算法 查詢演算法

2021-09-26 14:19:28 字數 962 閱讀 6445

馬上秋招了,秋招考得多數是演算法,平常學別的過多,演算法基本都忘完了,今天回憶一下最基本的幾個。

回憶起來突然發現當初的演算法也太簡單了,今天先從查詢法說起

二分查詢法

要求資料必須是從小到大(從大到小也行,反過來設計就可以了)

像這樣的

1,3,5,6,9,10,11

查10先比較最中間的數

10>6

所以下一次在9,10,11中查詢,取中間數10,查詢成功。

時間複雜度就是最多迴圈的次數,可以表示o(h)=o(log2n)

public static int binarysearch(integer srcarray, int des)  else if (des < srcarray[middle])  else 

}//若沒有,則返回-1

return -1;

}

順序查詢法,按順序乙個乙個查,沒什麼可說的,複雜度n

插值查詢法,比起二分查詢法只是修改了從**查起。

例如 1,2,3,4,5,6

查5,第一次是從(0+5)×(5-1)/(6-1)=4

也就是a[4],直接查到結果,但是如果資料不是這樣均衡例如

1,7,11,55,111這種的他還不如二分查詢法

時間複雜性:如果元素均勻分布,則o(log log n)),在最壞的情況下可能需要 o(n)。

空間複雜度:o(1)。

//插值查詢法 arr陣列,length 陣列長度,key 查詢的關鍵字

//返回查詢值的下標 ,沒查詢到 返回-1

public static int interpolation_search(int arr, int length, int key)

else if(key > arr[mid])

else

}return -1;

}

演算法 查詢演算法

定義 符號表是一種儲存鍵值對的資料結構,支援兩種操作 插入 put 即將一組新的鍵值對存入表中 查好 get 即根據給定的鍵得到相應的值。目的 符號表最主要的目的就是將乙個鍵和乙個值聯絡起來。用例能夠將乙個鍵值對插入符號表並希望在之後能夠從符號表的所有鍵值對中按照鍵直接找到對應的值。符號表是一種典型...

查詢演算法 折半查詢演算法

折半查詢演算法 binary search param a 乙個有序的集合 本次為由小到大 param x 需要查詢的值 ps 首先使用折半演算法的時候 集合必須是有序的 eg a 1,3,5,7,9 x 3 a mid low height 1,3,5,7,9 2 0 1 1,3 0 1 1 3 ...

排序演算法 查詢演算法

排序演算法 交換排序 選擇排序 歸併排序 基數排序 查詢演算法 動態查詢 雜湊表查詢 簡介 n個資料,從1到n乙個乙個插入進行排序。空間複雜度 o 1 時間複雜度 o n2 演算法穩定性 穩定演算法 簡介 取幾個增量,如5,2,1 最後乙個增量必須為1 然後從左到右5個5個的排序 如 1到5資料排序...