【C语言】二分查找

版权声明:如需转载,请注明出处 https://blog.csdn.net/baidu_41813368/article/details/83590303

非递归

//二分查找
typedef int ssize_t;
typedef unsigned int size_t;
//二分查找
typedef int ssize_t;
typedef unsigned int size_t;
//非递归
ssize_t BinarySearch(int array[], size_t size, int data)
{
	size_t left, right;
	left = 0;
	right = size;
	while (left < right)
	{
		size_t mid = left + (right - left) / 2;
		if (array[mid] == data) {
			return mid;
		}
		if (data < array[mid])
		{
			right = mid;
		}
		else
		{
			left = mid+1;
		}
	}
	return -1;
}

递归

//二分查找
typedef int ssize_t;
typedef unsigned int size_t;
//递归
ssize_t BinarySearch(int array[], size_t size, int data)
{
	size_t left, right;
	left = 0;
	right = size;
	if (size <= 0)
	{
		return -1;
	}
	size_t mid = left + (right - left) / 2;
	if (data == array[mid])
	{
		return mid;
	}
	if (data < array[mid])
	{
		return BinarySearch(array, mid, data);
	}
	else
	{
		return BinarySearch(array + mid + 1, size - mid - 1, data);
	}
}

猜你喜欢

转载自blog.csdn.net/baidu_41813368/article/details/83590303