简单二分法

本文介绍了一种从地图坐标字符串中提取城市信息的算法。通过解析输入字符串并分段处理,该算法能有效获取指定数量的城市坐标点。算法采用递归方式,确保在不同数据集上的一致性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$MapString="116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43#116.310634759589,39.990045537862,46#116.310371735567,39.989799696735005,44#116.310489333624,39.989904135209,43#116.31047961062,39.989998263946,42.5#116.310506600338,39.990206973256,52.5#116.310506600338,39.990206973256,52.5#116.311968822793,39.99050754819,43#116.312106621229,39.99047402059,43#116.31211324293001,39.990485922888006,43";
$arr = explode("#",$MapString);
$CityArray="";
getMapCity($arr, 10, 1, $CityArray);
/*********************
*@parent MapArr    数组
*@parent number    最小数值
*@parent i         次数
*@parent CityArray 取得的数值
*********************/
function getMapCity($MapArr, $number, $i,&$CityArray){
	if(count($MapArr) >= $number){
		$z = ceil(count($MapArr)/2);
		if($i==1){ //第一次取三个点信息
		    $CityArray[]=$MapArr[0];
			$CityArray[]=$MapArr[count($MapArr)-1];			
		}
		$CityArray[]=$MapArr[$z];
		$firstArray = array_slice($MapArr,0,$z);
		$endArray = array_slice($MapArr,$z,$z);
		getMapCity($firstArray,$number,++$i, $CityArray);
		getMapCity($endArray,$number,++$i,$CityArray);
	}
}
echo "<h1>CityArray</h1>";
var_dump($CityArray);

  

转载于:https://www.cnblogs.com/xiangxiaodong/archive/2012/02/16/2354511.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值