折半查詢法

2021-08-01 03:12:30 字數 1377 閱讀 9342

輸出檔案

輸出檔案

half.in

half.out

大魔導師培根曾經說過:「讀史使人明智,讀詩使人聰慧,演算使人精密,哲理使人深刻,倫理學使人有修養,邏輯修辭使人善辯。」由此可見書籍的重要性是不言而喻的。而與書籍天天打交道的圖書管理員,更是奪天地之造化,吸日月之精華的「神之職業」。據史料記載,魔法世界從古至今誕生的眾多不平凡的人物中,有不少人都曾經做過「圖書管理員」,如道家學派創始人老子,威軟公司創始人比耳、少林藏經閣的掃地神僧等等。所以,作為以馬虎自負出名的楚繼光,在魔法學院的社會實踐活動中又怎麼會放過這「天將降大任於斯人也」的必經鍛鍊呢。但想成為乙個合格的圖書管理員並不容易,他必須能夠在一排(10000以內)已按編號大小排好序的圖書中,快速地按編號查詢到某本書所在的位置。

【輸入格式】

輸入檔案第一行是n,表示有n個元素,第二行是n個數,第三行是m表示要查詢的數。

【輸出格式】

乙個數,即如找到該數,則輸出位置,否則輸出-1。

【輸入樣例】

2 4 6

【輸出樣例】

遞迴二分演算法

將已排好序的數列一次存入陣列a,取最小值bot,最大值top,取中間值mid,key為要找的數。如果key>mid,我們選擇後半段(較大)的進行查詢;如果key

#include

#include

#include

using

namespace

std;

int a[10000],key;

void search(int bot,int top)

else

if(key1);//否則取前半段遞迴

}else search(mid+1,top);//取後半段遞迴

}else

cout

<<"-1"

cin>>key;

search(0,n-1);

return

0;}

非遞迴二分法

思路與遞迴二分法基本一致。

完整**如下:

#include

#include

#include

using

namespace

std;

int key,top,bot,mid,n,a[10000];

void half()//二分查詢法

else

if (key//選擇右半段

bot=mid-1;

else

//選擇左半段

top=mid+1;

} cout

<<-1

折半查詢法

折半查詢法 include include int binsearch int x,int v,int n return 1 int main scanf d x scanf d n x 2 n 7 position binsearch x,v,n 呼叫函式時,不要再引數的型別,陣列v,用v代替就好...

折半查詢法

折半查詢法也稱二分查詢法,是一種快捷有效的查詢關鍵字的方法。在所需查詢資料量較大時,可高效縮短用迴圈遍歷的查詢時間,大大提公升機器效率 但其缺點是所需查詢陣列必須是有序的,下以公升序為例。例 有乙個陣列arr,裡面公升序存放了10個整數,arr 10 任意輸入乙個數字,用折半查詢法找到其位於陣列中的...

折半查詢法

折半查詢法是效率較高的一種查詢方法。假設有已經按照從小到大的順序排列好的五個整數a0 a4,要查詢的數是x,其基本思想是 設查詢資料的範圍下限為l 1,上限為h 5,求中點m l h 2,用x與中點元素am比較,若x等於am,即找到,停止查詢 否則,若x大於am,替換下限l m 1,到下半段繼續查詢...