查找表:就是同一类型的数据元素构成的数据集合
有静态表和动态表
本文实现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的渣渣