輸出檔案
輸出檔案
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,到下半段繼續查詢...