對於已經排好序的表,有
在有序表中,取中間的記錄進行比較,如果相同,匹配成功。如果比中間值小,就在中間記錄的左半區進行查詢,如果大,就在右半區。
public
static
intbinarysearch(int key)
return -1;
}
插值查詢是對折半查詢的改進。
折半時 mid = (l
ow+h
eigh
t)2 = lo
w2+ he
ight
2 = low-lo
w2+ he
ight
2 = low+ 12
(height-low)
折半查詢是按1/2進行查詢,如果有10000個有序陣列找乙個很小的數5,就有了優化的空間。
將查mid的公式替換為mid=low+ke
y−a[
low]
a[he
ight
]−a[
low]
(height-low) 即按比例獲取要比較的中間值
斐波那契相鄰的數接近**分割,與折半類似,只是切割的範圍為**分割點。平均效率高於折半,最壞的效率比折半差
public
static
void
main(string args) ;
system.out.println("==>" + fbsearch(src, 88));
} public
static
intfbsearch(int array, int key) else
if (key > tmp[mid]) else
}return -1;
} //獲取斐波那契陣列
public
static
int getfibon(int len)
return fibon;
}
參考:大話資料結構 資料結構 有序表查詢及實現
折半查詢 binary search 又稱為二分查詢。它的前提就是u是線性表中的記錄必須有序的,線性表必須採用順序儲存。折半查詢的基本思想 在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功 若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢 若給定值大雨中間記錄...
大話資料結構 順序表 有序表 線性索引查詢
查詢 根據給定的某個值,在查詢表中確定乙個其關鍵字 唯一的標識乙個記錄 等於給定值的資料元素或資料記錄。靜態查詢 只查詢,不修改元素 線性表 順序查詢 二分查詢 動態查詢 查詢時,插入或者刪除元素 二叉排序樹 順序表查詢 順序查詢 針對靜態查詢表 也叫線性查詢o n 從頭開始遍歷,直到最後乙個記錄。...
資料結構演算法題 有序矩陣查詢
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,誒一列都按照從上到下遞增的順序排序,請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否包含了該整數。例如下面的二維陣列就是每行 沒列都遞增排序。如果在這個陣列中查詢數字7,則返回true 找得到 如果查詢數字5,由於陣列不含該數字,...