php折半查找算法,二分查找 [折半查找] 算法 PHP 版

查找表:就是同一类型的数据元素构成的数据集合

有静态表和动态表

本文实现PHP版的二分查找算法【本算法仅用于顺序存储的查找表】

/**

* Created by PhpStorm.

* User: 1655664358@qq.com

* Date: 2019/7/01

* Time: 11:38

*/

class Elem{

public $key;

}

class Table

{

public $data = [];

public $lenght;

}

function createTable(Table &$table,$length)

{

$table->lenght = $length;

$obj = new Elem();

fwrite(STDOUT,"请输入数据:\n");

for($i=1;$i<=$table->lenght;$i++){

$elem = clone $obj;

$elem->key = fgets(STDIN,10);

$table->data[$i] = $elem;

}

}

function searchBin(Table $table,$key):int

{

$low = 1;

$height = $table->lenght;

while($low<=$height){

$mid = floor(($low+intval($height))/2);

if ($table->data[$mid]->key==$key){

return $mid;

}else if($table->data[$mid]->key>$key){

$height=$mid-1;

}else{

$low = $mid+1;

}

}

return 0;

}

(function(){

$table = new Table();

fwrite(STDOUT,"请输入数据元素个数:\n");

$length = fgets(STDIN,10);

createTable($table,$length);

fwrite(STDOUT,"请输入要查找的数据元素:\n");

$key = (integer)fgets(STDIN,10);

$location = searchBin($table,$key);

if ($location){

fwrite(STDOUT,"查找到的数据索引为:$location\n");

}else{

fwrite(STDERR,"查找不到指定的内容\n");

}

})();

本作品采用《CC 协议》,转载必须注明作者和本文链接

只会php crud的渣渣

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值