【数据结构】二分查找(C++实现)

二分查找的一个重要前提:表中的元素必须有序,且仅限于顺序存储结构。

include <iostream>

using namespace std;

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

//注意:表中的元素必须有序,且仅限于顺序存储结构
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]) //往左区间找
{
high = mid - 1;
}
else //往右区间找
{
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;

}


参考资料:《数据结构(C语言版)》p166-p169

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 查找和排序都是程序设计中经常用到的算法。查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找和二叉排序树查找...
    eagleRock阅读 5,618评论 0 14
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,222评论 0 7
  • // 顺序查找 int SequentialSearch(vector & v, int k) { for (in...
    刘帆_d384阅读 580评论 0 0
  • 有很棒的梦想 有想去的地方 有过熬夜奋斗很累但很有成就感的感觉 有在夜深人静听的音乐 有最爱的主唱 写一手好看的字...
    小七yyyy阅读 96评论 0 0
  • 在乡下赶回城的车上,一如既往的酸臭充斥整个车厢,它是农民的汗水与现代仿真皮套在原始微生物辛勤劳作下的成果。但除了大...
    e16e6cb77219阅读 422评论 0 1