PHP实现的折半查找算法示例

2025-05-29 0 82

本文实例讲述了PHP实现的折半查找算法。分享给大家供大家参考,具体如下:

定义:折半查找技术,也就是二分查找。它的前提是线性表中的记录必须是关键码有序(通常从大到小有序),线性表必须采用顺序存储。

折半查找的基本思想:取中间记录作为比较对象,若给定值与中间记录的关键字,则在中间记录的关键字相等,则查找成功;若给定值小于中间记录的作伴去继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。

实现代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43
<?php

//递归方式

function bin_recur_search($arr,$val){

global $time;

if(count($arr) >= 1){

$mid = intval(count($arr) / 2);

$time++;

if($arr[$mid] == $val){

return '值为:'.$arr[$mid].'<br>查找次数:'.$time.'<br>';

}elseif($arr[$mid] > $val){

$arr = array_splice($arr,0,$mid);

return bin_recur_search($arr, $val);

}else{

$arr = array_slice($arr,$mid + 1);

return bin_recur_search($arr, $val);

}

}

return '未找到'.$val;

}

//非递归方式

function bin_search($arr,$val){

if(count($arr) >= 1){

$low = 0;

$high = count($arr);

$time = 0;

while($low <= $high){

$time++;

$mid = intval(($low + $high)/2);

if($val == $arr[$mid]){

return '索引:'.$mid.'<br>值为:'.$arr[$mid].'<br>查找次数:'.$time;

}elseif($val > $arr[$mid]){

$low = $mid + 1;

}else{

$high = $mid - 1;

}

}

}

return '未找到'.$val;

}

$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);

echo bin_recur_search($arr, 673);

echo bin_search($arr, 673);

?>

运行结果:

?

1

2

3

4

5
值为:673

查找次数:4

索引:10

值为:673

查找次数:4

希望本文所述对大家PHP程序设计有所帮助。

原文链接:http://blog.csdn.net/fff058/article/details/52295684

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP实现的折半查找算法示例 https://www.kuaiidc.com/93145.html

相关文章

发表评论
暂无评论