杭电ACM——1007最近点对问题

博客介绍了如何运用分治法解决杭电ACM竞赛中的最近点对问题,指出由于点的坐标给定,直接二分法不适用。通过递归不断减小区间,找到横坐标和纵坐标差的平方和小于最小距离平方的点对,以确定最短距离。同时,文中提到一个数学判断,涉及直角三角形的性质来辅助决策。
摘要由CSDN通过智能技术生成

首先介绍下二分法查找,又叫对分查找:

        给定一个整数X 和整数A0,A1,A2,.............An-1, 后者已经预先排序并在内存中,求使得Ai = X 的下标i,如果X不在数据中,则返回i = -1。

      一个好的策略是验证X是否是居中的元素,如果是,则答案就找到了,如果X小于居中元素,那么我们可以用同样的策略于居中居中元素左边已经排序的子序列;同理,如果X大于居中元素,那么我们检查数据的右半部分。

代码:

int BinarySearch(const int A[], int X, int N)
{
	int Low, Mid, High;

	Low = 0;
	High = N-1;

	while(Low <= High)
	{
		Mid = (Low + High)/2;
		if(A[Mid] < X)
			Low = Mid + 1;
		else
			if(A[Mid] > X)
				High = Mid -1;
			else
				return Mid;
	}
	return -1;
}

 

这里是给出了一系列点的坐标,所以不能直接用二分法,因为如果将每个点之间距离求出来排序的话,就没有用二分法的必要了,因为已经直

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值