二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。
假設我們比較的有序數列有三個數,我們比較乙個元素的值和陣列中間位置的元素的值進行比較,如果比中間的元素大,則在有序陣列的後半部分進行查詢;如果中間位置的元素的值小,則跟有序陣列的前半部分進行比較;如果相等,則找到了比較元素的位置.
package binarysearch;
/** * @author le
*/public
class
binarysearch
;// 執行的次數
int count =0;
// 待查詢的元素
int target =44;
// 陣列的起始索引
int low =0;
// 陣列中間元素的索引
int mid =0;
// 陣列末尾的索引
int high = num.length -1;
// 判定條件
while
(low <= high)
else
if(target < num[mid]
)else
if(target > num[mid])}
}}
主要是在於 low 和 high 還有 mid 的變化 在每一次比較之後應該怎麼變
二分查詢的流程假設待查詢的值為 44 有序查詢陣列為:arr = ;
總計需要查詢四次
二分查詢法作為一種常見的查詢方法,將原本是線性時間提公升到了對數時間範圍,大大縮短了搜尋時間,但它有乙個前提,就是必須在有序資料中進行查詢,其演算法複雜度為o(log2n)!
演算法注意的點的(優化):
二分查詢詳解
演算法概括 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將...
二分查詢入門詳解
在平常的軟體開發過程中,我們經常都會遇到需要在陣列或集合中查詢某個指定元素的情況。通常情況下,我們會使用按照自然順序的方式來查詢陣列中的是否存在指定的元素。例如 從陣列中順序查詢是否存在指定的元素,如果存在則返回該元素的索引,否則返回 1 param array 指定所查詢的陣列 param sea...
二分查詢入門詳解
在平常的軟體開發過程中,我們經常都會遇到需要在陣列或集合中查詢某個指定元素的情況。通常情況下,我們會使用按照自然順序的方式來查詢陣列中的是否存在指定的元素。例如 從陣列中順序查詢是否存在指定的元素,如果存在則返回該元素的索引,否則返回 1 param array 指定所查詢的陣列 param sea...