二分查詢法

2021-06-08 23:12:58 字數 1203 閱讀 6929

有序陣列中的find()方法

public int find(long serchkey)

int lowerbound = 0;

int upperbound =nelems-1;

while(true) 

curin= (lowerbound+upperbound)/2;

if(a[curin==serchkey)

return curin; //found it

else if (lowerbound>upperbound)

return nelems; //can't find it

else                    //divide range

if(a[curin)lowerbound=curin+1;

else

upperbound=curin-1;

有序陣列的插入方法可使用的二分查詢法

public int find(long searchkey)

//如果陣列為空,直接插入,故插入位置為下標0

if(nelems == 0)

return 0;

//起始下標

int lowerbound = 0;

//結尾下標

int upperbound = nelems - 1;

//當前下標

int curin;

while(true)

curin = (lowerbound + upperbound) / 2;

if(a[curin] > searchkey)

upperbound = curin - 1;

if(lowerbound > upperbound)

return curin;

else if(a[curin] < searchkey)

lowerbound = curin + 1;

if(lowerbound > upperbound)

return lowerbound;

然後是插入

public vod insert(long value)

int j=find(value); 

for(int k=nelems;k>j;k--) //move bigger ones up

a[k]=a[k-1];

a[j]=value;

nelems++;

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...

二分查詢法

二分查詢法只適用於有序的數列,取中間數與查詢的數比較,然後再確定頭或者尾 define crt secure no warnings 在vs2013下執行要關閉安全監察 include include 獲得陣列首位址,要查詢的數,最小下標,最大下標 int search int p,int key,...