循环算法实现:
#include <iostream>
using namespace std;
int BinarySearch(
int*
array,
int size,
int data)
{
int left =
0;
int right = size-
1;
int mid =
0;
while(left <= right)
{
mid = left + ((right - left)>>
1);
if(
array[mid] == data)
return mid;
else if(
array[mid] > data)
right = mid-
1;
else
left = mid+
1;
}
return -
1;
}
void FunTest()
{
int array[
10] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10};
int ret = BinarySearch(
array,
sizeof(
array)/
sizeof(
array[
0]),
7);
cout<<ret<<endl;
}
int main()
{
FunTest();
system(
"pause");
return 0;
}
递归算法实现:
#include <iostream>
using namespace std;
int BinarySearch(
int*
array,
int left,
int right,
int data)
{
if(left <= right)
{
int mid = left + ((right - left)>>
1);
if(
array[mid] == data)
return mid;
else if(
array[mid] < data)
return BinarySearch(
array, mid+
1, right, data);
else
return BinarySearch(
array,left, mid-
1, data);
}
}
void FunTest()
{
int array[
10] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10};
int ret = BinarySearch(
array,
0, (
sizeof(
array)/
sizeof(
array[
0]))-
1,
7);
cout<<ret<<endl;
}
int main()
{
FunTest();
system(
"pause");
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-674613.html