PHP基础加强系列四之查找

胡三金 2017-06-13 16:55:05 201 0 comments

序言:这篇文章主要讲了顺序查找和二分查找

(1)顺序查找

核心:很简单,遍历要查找的数组,将要查找的值与数组的元素一一比对,相同的则返回下标;

小例子:

image.png

这是第一种方式,用foreach,下面再用一种for循环

image.png

输出:

image.png

对了数组为:$arr = [1,2,3,4,5,6,6];这种查找的有一个好处就是数组可以是有序,也可以是无序;下面要讲的二分查找只能是有序数组才可以

(2).二分查找

核心:确定数组的中间数,然后将这个中间数同要查找的数比较,如果中间数大于要查找的数,则在中间数左边的区域查找,反之则在中间数的右边查找;假如查找的数比中间数小,然后在左边的区域再确定一个中间数,然后又用这个新的中间数和要查找的数做比较,如果小还是重复上述步骤,就这样一直反复,直到那个中间数就是要找的数,然后输出;这里其实运用了递归的思想;

小例子:

image.png

上面这个就是二分查找的实现;

传入的参数是起始位置,结束位置,数组,要查找的值;

简单地解释一下这个小例子:

首先要查找8;所以先确定中间数$middle=3;因为8>4;所以在4右边区域找;进行递归调用函数,此时$middle=5,此时$arr[$middle]=6,因为8>6,继续递归,此时$left=6,$right=5,不满足if条件,退出查找,说明数据不存在;

就这样完成了对数据8的查找;



转载请注明出处,谢谢!




标签
评论一下

评论列表

暂时没有评论,快来评论吧..