1.編寫乙個程式,使其實現二分搜尋
/*二分搜尋
*以vector為例
*/#include
#include
using
namespace std;
intmain()
p.sort
(p.begin()
,p.end()
,(const
int& a,
const
int& b)
)//排序
auto beg=p.
begin()
; cout<<
"請輸入您要查詢的數"
cin>>num;
auto end=p.
end();
auto middle=p.
begin()
+(end-beg)/2
+1;//中間點
while
(middle!=end&&
*middle!=num)
if(middle==end)
cout<<
"未找到!"
cout<<
"找到了"
<<
*middle
}
小結:
1.容器要先排序
2.要調整中間點
查詢(一)二分查詢
基本思想 說明 元素必須是有序的,如果是無序的則要先進行排序操作。也稱為是折半查詢,屬於有序查詢演算法。用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功 若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束發現表中...
python搜尋演算法實現 (一)二分查詢法
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...
c 語言 二分搜尋
題目描述 在有序序列中查詢某一元素x。輸入首先輸入乙個正整數n n 100000 表示該序列有n個整數,然後按從小到大的順序輸入n個整數 接著是乙個正整數m,表示有m次查詢 最後是m個整數,表示m個要查詢的整數x。輸出對於每一次查詢,有一行輸出。若序列中存在要查詢的元素x,則輸出元素x在序列中的序號...