演算法概括
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複上述過程,直到找到滿足條件的記錄,使查詢成功,或者到子表不存在為止,此時查詢不成功。
演算法要求
1、必須採用順序儲存結構
2、必須按關鍵字大小有序排列
**示例
典型**
查詢某個數的下標
public
int binarysearch(int a, int n, int key)
else
if(key < a[mid])
else
}return -1;
}
查詢第乙個大於等於某個數的下標
例:int a=,查詢2,返回第乙個2的下標1;查詢3,返回4的下標4;查詢4,返回4的下標4;如果沒有大於key的數就返回-1。
public
int firstgreatorequal(int a, int n, int key)
else
}return low <= n ? low : -1;
}
二分查詢詳解
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。假設我們比較的有序數列有三個數,我們比較乙個元素的值和陣列中間位置的元素的值進行比較,如果比中間的元素大,則在有序陣列的後半部分進行查詢 如果中間...
二分查詢入門詳解
在平常的軟體開發過程中,我們經常都會遇到需要在陣列或集合中查詢某個指定元素的情況。通常情況下,我們會使用按照自然順序的方式來查詢陣列中的是否存在指定的元素。例如 從陣列中順序查詢是否存在指定的元素,如果存在則返回該元素的索引,否則返回 1 param array 指定所查詢的陣列 param sea...
二分查詢入門詳解
在平常的軟體開發過程中,我們經常都會遇到需要在陣列或集合中查詢某個指定元素的情況。通常情況下,我們會使用按照自然順序的方式來查詢陣列中的是否存在指定的元素。例如 從陣列中順序查詢是否存在指定的元素,如果存在則返回該元素的索引,否則返回 1 param array 指定所查詢的陣列 param sea...