【思想】
二分搜尋主要解決的問題是確定排序後的陣列x[0,n-1]中是否包含目標元素target。
二分搜尋通過持續跟蹤陣列中包含元素target的範圍(如果target存在陣列中的話)來解決問題。
一開始,這個範圍是整個陣列,然後通過將target與陣列中的中間項進行比較並拋棄一半的範圍來縮小範圍。該過程持續進行,
直到在陣列中找到target或確定包含target的範圍為空時為止。在有n個元素的表中,二分搜尋大約需要執行lgn次比較操作。
提供充足的時間,竟然只有10%的專業程式設計師能夠將這個程式編寫正確。
【正解】
/*********************************
* 日期:2015-01-03
* 題目: 二分查詢演算法
* 部落格:
**********************************/
#include using namespace std;
int binarysearch(int a, int n, int target) //if
int start = 0,end = n-1;
// 二分查詢
while(start <= end)//if
else if(a[mid] > target)//else
else//else
}//while
return -1;
}int main();
cout<【錯解】
/*********************************
* 日期:2015-01-03
* 題目: 二分查詢演算法
* 部落格:
**********************************/
#include using namespace std;
int binarysearch(int a, int n, int target) //if
int start = 0,end = n-1;
// 二分查詢
while(start < end)//if
else if(a[mid] > target)//else
else//else
}//while
return -1;
}int main();
cout<
【錯解二】
/*********************************
* 日期:2015-01-03
* 題目: 二分查詢演算法
* 部落格:
**********************************/
#include using namespace std;
int binarysearch(int a, int n, int target) //if
int start = 0,end = n-1;
// 二分查詢
while(start <= end)//if
else if(a[mid] > target)//else
else//else
}//while
return -1;
}int main();
cout<
二分查詢演算法
1.第一步查詢中間元素,即5,由於5 6,則6必然在5之後的陣列元素中,那麼就在中查詢,2.尋找的中位數,為7,7 6,則6應該在7左邊的陣列元素中,那麼只剩下6,即找到了。二分查詢演算法就是不斷將陣列進行對半分割,每次拿中間元素和goal進行比較。include iostream using na...
二分查詢演算法
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...
二分查詢演算法
二分查詢演算法是在有序陣列中用到的較為頻繁的一種演算法,在未接觸二分查詢演算法時,最通用的一種做法是,對陣列進行遍歷,跟每個元素進行比較,其時間為o n 但二分查詢演算法則更優,因為其查詢時間為o lgn 譬如陣列,查詢元素6,用二分查詢的演算法執行的話,其順序為 1.第一步查詢中間元素,即5,由於...