查詢(一)二分查詢

2022-02-13 07:23:18 字數 664 閱讀 6568

基本思想:

說明:元素必須是有序的,如果是無序的則要先進行排序操作。

也稱為是折半查詢,屬於有序查詢演算法。用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束發現表中沒有這樣的結點。

普通實現:

public

static

int binarysearch(int srcarray, int

key)

else

if (key >srcarray[mid])

else

} return -1;

}

遞迴實現:

public

static

int binarysearch(int srcarray, int start, int end, int

key)

if (start >=end)

else

if (key >srcarray[mid])

else

if (key return -1;

}

演算法分析:

查詢演算法一 二 線性查詢 二分查詢

思路分析 直接遍歷陣列,查詢和要查詢的元素相等的元素的索引,如果相等,則返回該索引,如果沒找到,則返回 1 如果可能存在多個的索引時,則可以把每乙個索引放入list集合中,返回list集合即可 演示 只找乙個索引的情況 public static intlinesearch int arr,int ...

面試整理 一 二分法查詢

首先,說明一下二分法是怎樣的 給定的陣列是有序的,給定乙個key值,每次查詢最中間的值,如果相等,就返回對應的下標 如果key大於最中間的值,則在陣列的右半邊繼續查詢 如果小於,則在陣列的左半邊查詢。那麼最終存在兩種結果 一種是找到了並返回對應的下標,第二種就是沒有找到,返回 1。下面舉例說明 存在...

NOJ1001 演算法實驗一 二分查詢

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。輸出每個...