码迷,mamicode.com
首页 > 编程语言 > 详细

C++实现二分查找

时间:2016-05-17 00:58:06      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:二分查找

#include <iostream>
using namespace std;
#include <assert.h>

//方法1:区间为[ ]
/*
int BinarySearch(int* a, int size, int x)
{
	assert(a);
	int left = 0;
	int right = size - 1;
	while (left <= right)
	{
		int mid = left+(right - left) / 2;

		if (a[mid] < x)
		{
			left = mid + 1;
		}
		else if (a[mid] > x)
		{
			right = mid - 1;
		}
		else
		{
			return mid;
		}
	}

	return -1;
}*/

//方法2:区间为[ )
int BinarySearch(int* a, int size, int x)
{
	assert(a);
	int left = 0;
	int right = size;
	while (left < right)
	{
		int mid = left + (right - left) / 2;

		if (a[mid] < x)
		{
			left = mid + 1;
		}
		else if (a[mid] > x)
		{
			right = mid;
		}
		else
		{
			return mid;
		}
	}

	return -1;
}

void Test()
{
	int array[] = {0, 1, 2, 3, 4, 5, 6, 7};
	cout<<BinarySearch(array, sizeof(array)/sizeof(array[0]), 0)<<endl;
}

int main()
{
	Test();
	return 0;
}


C++实现二分查找

标签:二分查找

原文地址:http://zgw285763054.blog.51cto.com/11591804/1774116

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!