1.順序查找:
順序查找也稱為線形查找,從數據結構線形表的一端開始,順序掃描,依次將掃描到的結點關鍵字與給定值k相比較,若相等則表示查找成功;若掃描結束仍沒有找到關鍵字等於k的結點,表示查找失敗。 、
代碼實現如下:
/**
*
* @param a-需要被查找的數組
* @param s-需要查找的元素
* @return int -返回查找到的索引值,-1表示沒查到
*/
public static int seek(int[] a , int s){
for(int i = 0; i < a.length;i++){
if(a[i]==s){
return i;
}
}
return -1;
}
2.二分查找:
二分查找要求線形表中的結點按關鍵字值升序或降序排列,用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查找成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查找哪個子表,這樣遞歸進行,直到查找到或查找結束發現表中沒有這樣的結點。
代碼實現如下:
/**
*
* @param a 需要被查找的數組
* @param front 數組的第一個索引
* @param end 數組的最后一個索引
* @param seekFalue 需要查找的元素
* @return int 返回查到的元素索引,-1表示
*/
public static int seek(int[] a, int front, int end, int seekFalue) {
if (front <= end) {
int mid = (front + end) / 2;
if (a[mid] == seekFalue) {
return mid;
} else if (a[mid] > seekFalue) {
return seek(a, front, mid - 1, seekFalue);
} else if (a[mid] < seekFalue) {
return seek(a, mid + 1, end, seekFalue);
}
}
return -1;
}
3.分塊查找:
分塊查找也稱為索引查找,把線形分成若干塊,在每一塊中的數據元素的存儲順序是任意的,但要求塊與塊之間須按關鍵字值的大小有序排列,還要建立一個按關鍵字值遞增順序排列的索引表,索引表中的一項對應線形表中的一塊,索引項包括兩個內容:① 鍵域存放相應塊的最大關鍵字;② 鏈域存放指向本塊第一個結點的指針。分塊查找分兩步進行,先確定待查找的結點屬於哪一塊,然后在塊內查找結點。
代碼實現如下:
4.哈希表查找: