算法解释
二分法查找针对的是一个已经排好序的查找数据结构。通常情况下,顺序查找需要逐一遍历,而二分法查找利用排序的优势,将查找范围每次逐步缩小二分之一,直到查找到为止。
下面是代码:
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <malloc.h>
#define MAXSIZE 10
using namespace std;
int Binear_Search(int *a, int key) {
int left = 0;
int right = MAXSIZE;
int centerIndex;//得到中心点的值
while (left != right)
{
centerIndex = (left + right) / 2;
if (a[centerIndex] > key)//如果中间值比key要大,说明要往左边走
{
right = centerIndex-1;
}
else if (a[centerIndex] == key)//如果想等,直接返回
{
return centerIndex;
}
else {//如果是小于key的,那么要往右走
left = centerIndex+1;
}
}
return -1;
}
int main(void) {
int arrays[] = { 1,3,5,7,9,33,55,65,77,79 };
int i = 0;
for (i;i<MAXSIZE;i++)
{
cout << "查找的值为:"<<arrays[i]<<"查找到的位置为:" << Binear_Search(arrays,arrays[i]) << endl;;
}
system("pause");
return 0;
}