PHP练习-二分查找算法

2018-08-24 23:00 By "Powerless" 3607 0 1

/**
 * 二分查找,要求数组已经排好顺序
 * @param  array $array 数组
 * @param  int $low   数组起始元素下标
 * @param  int $high  数组末尾元素下标
 * @param   $k     要查找的元素
 * @return mixed        成功时返回数组下标,失败返回-1
 */
function binSch($array,$low,$high,$k){
    if ($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if ($array[$mid] == $k) {
            return $mid;
        } elseif ($k < $array[$mid]) {
            return binSch($array,$low,$mid - 1,$k);
        } else{
            return binSch($array,$mid + 1,$high,$k);
        }
    }
    return -1;
}

// 测试:二分查找
$arr2 = array(5,9,15,25,34,47,55,76);
echo binSch($arr2,0,7,47);//结果为5


评 论

View in WeChat

Others Discussion

  • HTTP头中隐藏PHP版本号
    Posted on 2021-01-11 16:38
  • Composer 异常 [ErrorException]
    Posted on 2019-11-25 17:55
  • TCP协议的特性
    Posted on 2019-04-26 16:46
  • 能创建多少个 TCP 连接?
    Posted on 2021-08-02 16:00
  • PHP练习-移动数组内的0到最后并保持其他元素顺序不变
    Posted on 2020-08-14 20:32
  • Mysql联合索引的最左前缀匹配原则
    Posted on 2018-08-25 15:00
  • PHP没你想的那么差
    Posted on 2021-12-17 15:40
  • 快速了解Kafka
    Posted on 2021-03-25 14:20