【數(shù)據(jù)結(jié)構(gòu)】二分查找(C++實現(xiàn))

二分查找的一個重要前提:表中的元素必須有序,且僅限于順序存儲結(jié)構(gòu)。

include <iostream>

using namespace std;

int BinarySearch(int *a, int n, int key);

//注意:表中的元素必須有序,且僅限于順序存儲結(jié)構(gòu)
int BinarySearch(int *a, int n, int key)
{
int low = 0;
int high = n - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (a[mid] == key)
{
return mid;
}
if (key < a[mid]) //往左區(qū)間找
{
high = mid - 1;
}
else //往右區(qū)間找
{
low = mid + 1;
}
}

return -1;

}

int main()
{
int a[11] = {5, 16, 20, 27, 30, 36, 44, 55, 60, 67, 71};
int n = 11;

cout << "search 27 = " << BinarySearch(a, n, 27) << endl;
cout << "search 65 = " << BinarySearch(a, n, 65) << endl;
cout << system("pause");
return 0;

}


參考資料:《數(shù)據(jù)結(jié)構(gòu)(C語言版)》p166-p169

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 查找和排序都是程序設(shè)計中經(jīng)常用到的算法。查找相對而言較為簡單,不外乎順序查找、二分查找、哈希表查找和二叉排序樹查找...
    eagleRock閱讀 5,803評論 0 14
  • 原文出處:http://www.cnblogs.com/maybe2030/p/4715035.html引文出處:...
    明教de教主閱讀 9,323評論 0 7
  • // 順序查找 int SequentialSearch(vector & v, int k) { for (in...
    劉帆_d384閱讀 627評論 0 0
  • 有很棒的夢想 有想去的地方 有過熬夜奮斗很累但很有成就感的感覺 有在夜深人靜聽的音樂 有最愛的主唱 寫一手好看的字...
    小七yyyy閱讀 113評論 0 0
  • 在鄉(xiāng)下趕回城的車上,一如既往的酸臭充斥整個車廂,它是農(nóng)民的汗水與現(xiàn)代仿真皮套在原始微生物辛勤勞作下的成果。但除了大...
    e16e6cb77219閱讀 457評論 0 1

友情鏈接更多精彩內(nèi)容