#define max_count 100
//基於有序陣列的二分查詢
int keys[max_count] = ;
int values[max_count] = ;
int count = 0;
int isempty()
//根據給定的關鍵字,在字典中查詢是否有匹配項,並返回匹配的項的
//陣列索引,如果沒有找到匹配的項,則返回大於該關鍵字的項的索引,
//主要用於將新值插入到合適位置使用.
//比如當前關鍵字集為 3 7 9,當我要插入乙個key為8,此時使用rank(key)
//應該返回2,則當前新的key值插入到陣列索引2的位置.
int rank(int key)
else if ( key > keys[mid] )
else
}return lo;
}//獲取匹配key的字典項值,如果沒有匹配項,則返回-1
int get(int key)
i = rank(key);
if ( i < count && keys[i] == key )
return -1;
}//向字典插入新項,如果當前key值在字典中已經存在,則替換
//最新的字典項值,如果不存在,則將新項按序插入到合適的位置
void put(int key, int val)
for ( j = count; j > i; j-- )
keys[i] = key;
values[i] = val;
count++;
}int main(int argc, char *argv)
; int vals = ;
if ( argc != 2 )
for ( i = 0; i < sizeof(keys)/sizeof(keys[0]); i++)
findkey = atoi(argv[1]);
getval = get(findkey);
printf("key %d, val %d\r\n", findkey, getval);
return 0;
}
二分查詢(基於有序陣列)
採用一對平行的陣列,乙個儲存鍵乙個儲存值 實現的核心是rank 方法,它返回表中小於給定鍵的鍵的數量。二分查詢法 將被查詢的鍵和子陣列的中間鍵比較。如果被查詢的鍵小於中間鍵,就在左子陣列中繼續查詢,如果大於就在右子陣列中繼續查詢,否則中間鍵就是我們要找的鍵。實現 rank 採用了二分查詢法,rank...
二分查詢有序陣列
對於乙個有序字串陣列,用二分法查詢某一字串是否存在於該字串陣列中。函式原型為 bool binarysearch const vector array,const string target 注意這裡的有序指的是字典序,如字串陣列 a,ab,ac,bc,cd,d 就是有序字串陣列,而 a,b,ab ...
有序陣列的二分查詢
給出乙個有序陣列 公升序 以及指定的數值。返回指定數值在陣列中的下標 若不存在則返回 1 在傳入的公升序陣列arr中查詢是否有元素值與給定的number相等。param arr 有序陣列 公升序 param number 指定的數值 return 指定數值在該陣列中的下標值。返回 1表示不存在 st...