×

php二分法算法

php二分法算法(编程实现二分法算法)

admin admin 发表于2023-03-26 21:18:07 浏览60 评论0

抢沙发发表评论

本文目录一览:

二分查找中出现相同元素怎么办php

二分法查找数组是否包含某一元素,兼容正反序,代码实现:

复制代码 代码如下:

?php

$searchValue = (int)$_GET['key'];

function search(array $array, $value)

{

$max = count($array)-1;

$min = 0;

$isAscSort = $array[$min] $array[$max];

while (TRUE) {

$sum = $min+$max;

$midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);

if ($max $min) {

return -1;

} else if ($value == $array[$midKey]) {

return 1;

} else if ($value $array[$midKey]) {

$isAscSort ? $min = $midKey+1 : $max = $midKey-1;

} else if ($value $array[$midKey]) {

$isAscSort ? $max = $midKey-1 : $min = $midKey+1;

}

}

}

$array = array(

'4', '5', '7', '8', '9', '10', '11', '12'

);

// 正序

echo search($array, $searchValue);

// 逆序

rsort($array);

echo search($array, $searchValue);

这个之前搜过,看过百度百科的例子(Java的实现),还有一些其他技术宅写的Code,都有问题,根本就没实现,这些人不测试就放出来误导人,大家可以去搜搜看下,昨天闲来无事就自己写一个分享给大家。

二分法查找介绍 二分法查找是什么

1、算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序。

2、主要思想是:(设查找的数组区间为array[low, high])确定该区间的中间位置K。将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]T 由数组的有序性可知array[k,k+1,……,high]T;故新的区间为array[low,……,K-1]b.array[k]t p="" 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小一半,递归查找即可。时间复杂度为:o(log2n)。-php二分法算法

前端算法详解——二分法(查找、排序、去重、最小值)

需求:针对一有序数组查找某一个数是否在该数组中。

分析与思路: 二分法,一分为二。将数组分为两个进行查找,若该数小于中间值,则向左查找,否则向右查找。然后递归再次查找(这样每一次都是排除掉一半的不可能)

需求:将无序数组进行排序。

分析与思路: 将原始数组一分为二个数组(left、right),再讲这两个数组利用递归再次进行拆分...最后再将左右两个数组进行排序。

分析与思路:同理将数组一分为二,左右分别去重,在一起去重