XYNUOJ 習題6 9 折半查詢

2021-08-15 06:15:24 字數 645 閱讀 9875

時間限制: 1 sec  

記憶體限制: 12 mb [

提交][

狀態][

討論版]

有10個整數已按從小到大的順序排好序,儲存在乙個陣列中,再輸入乙個數,要求用折半查詢法找出該數是陣列中的第幾個元素(輸出該元素的下標即可)。如果該數不在陣列中,則輸出"not exist!"

輸入資料共2行

第一行10個整數,按從小到大的順序輸入,中間以空格分隔。

第二行1個整數

折半查詢所得該數所在陣列中的元素下標,單獨佔一行。

若該數不存在,則輸出一行資訊 "not exist!"

1 2 3 4 5 6 7 8 9 10

3

2
# includeint main(){

int a[10];

int n;

for(int i=0;i<10;i++)

scanf("%d",&a[i]);

scanf("%d",&n);

int i=0,j=9,k=0;

while(i<=j) //二分法

{ int mid=(i+j)/2;

if(a[mid]>n) j=mid-1;

else if(a[mid]

24,折半查詢

include 折半查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用...

6 2 2 折半查詢

折半查詢,又稱二分查詢,它適用於有序的順序表。基本思路是 首先將給定值key與表中中間位置元素的關鍵字比較,若相等,則查詢成功,返回該元素的儲存位置 若不等,則所需查詢的元素只能在中間元素以外的前半部分或後半部分中 例如,在查詢表公升序排列時,若給定值key大於中間元素的關鍵字,則所查詢的元素只可能...

6 13 折半查詢

給乙個嚴格遞增數列,函式int search bin sstable t,keytype k 用來二分地查詢k在數列中的位置。函式介面定義 int search bin sstable t,keytype k 其中t是有序表,k是查詢的值。裁判測試程式樣例 include using namespa...