`

二分法查找数组是否包含某一元素

阅读更多
原帖地址:http://www.cnblogs.com/toby/archive/2013/05/23/3094342.html

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



 1 <?php
2
3 $searchValue = (int)$_GET['key'];
4
5 function search(array $array, $value)
6 {
7 $max = count($array)-1;
8 $min = 0;
9 $isAscSort = $array[$min] < $array[$max];
10
11 while (TRUE) {
12 $sum = $min+$max;
13 $midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);
14
15 if ($max < $min) {
16 return -1;
17 } else if ($value == $array[$midKey]) {
18 return 1;
19 } else if ($value > $array[$midKey]) {
20 $isAscSort ? $min = $midKey+1 : $max = $midKey-1;
21 } else if ($value < $array[$midKey]) {
22 $isAscSort ? $max = $midKey-1 : $min = $midKey+1;
23 }
24 }
25 }
26
27 $array = array(
28 '4', '5', '7', '8', '9', '10', '11', '12'
29 );
30 // 正序
31 echo search($array, $searchValue);
32
33 // 逆序
34 rsort($array);
35 echo search($array, $searchValue);


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


这个没考虑非顺序键的数组,主要是方法,如果需要大家可以自己扩展下。

本文链接

分享到:
评论

相关推荐

    解析php二分法查找数组是否包含某一元素

    二分法查找是一种高效的搜索算法,它在已排序的数组中查找特定元素。该算法将查找范围不断减半,直到找到目标元素或者确定数组中不存在该元素。在PHP中,二分法查找可以帮助我们快速定位目标,尤其适用于大数据量的...

    二分法查找数组

    在探讨“二分法查找数组”这一主题时,我们深入解析了其算法原理、实现细节以及性能优势。本文将从二分法查找的基本概念出发,逐步解析其在数组中的应用,进而理解为何它能实现高效的查找效率。 ### 二分法查找基本...

    数据结构快速排序二分法查找

    二分法查找(Binary Search)是一种查找算法,用于查找排序后的数组中是否包含某个元素。二分法查找的时间复杂度为O(log n),是当前最快的查找算法之一。 在上面的代码中,BinSearch函数是二分法查找的实现,函数的...

    erfenfa.rar_二分法_数组 二分

    在“升序排列数组并用二分法查找所需元素”这个程序中,开发者可能实现了一个函数,该函数接收一个升序数组和一个目标值作为输入,然后运用二分法进行查找。这个函数通常会包括以下步骤: 1. 定义两个指针,分别...

    java实现二分法查找出数组重复数字

    在上面的代码实现中,我们首先定义了一个数组numbers,包含了多个数字,然后使用findDuplicate方法来查找数组中的重复数字。在findDuplicate方法中,我们使用了二分法查找的思想,通过计算数组中数字的个数与区间的...

    PHP基于二分法实现数组查找功能示例【循环与递归算法】

    二分查找算法,又称为折半查找算法,是一种在有序数组中查找特定元素的高效算法。它通过比较数组中间元素的值与目标值的大小,以决定是继续在中间元素的左侧还是右侧进行查找,从而大幅缩小查找范围。对于一个有序...

    java数组练习作业按逆序存放并输出二分法将一个数据插入到该数组二维数组对角线之和.pdf

    我们首先定义了一个整数数组`arr`和一个目标元素`target`,然后使用二分法查找`target`在`arr`中的下标`index`,如果`index`为-1,则表示`target`不存在于`arr`中,我们可以将其插入到`arr`中,使插入后的数组仍然...

    二分法查找(c++版)

    二分法查找,又称折半查找,是一种在有序数组中高效地查找特定元素的搜索算法。这种方法的关键在于利用数组的有序性,通过不断缩小搜索范围来快速定位目标值。在这个C++版本的二分法查找中,我们将深入理解其原理,...

    C语言实现的二分法快速查找|二分法排序|二分法查找C#

    如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 ##...

    二分法查找算法代码 c语言实现

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。在这个资源包中,我们重点关注的是使用C语言实现的二分法查找...

    学学Python_34函数_创建函数04 二分法查找

    二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是通过不断将待搜索区间减半,快速定位目标值。这一方法充分利用了有序数据的特性,大大减少了比较次数,提高了查找速度。以下是...

    vb.net二分法快速查找海量数据

    二分法,又称折半查找法,是一种在有序数组中搜索特定元素的高效算法。它主要利用了数组的线性特性,将...这个“二分法查找ok”文件很可能包含了一个完整的VB.NET实现示例,可以作为学习和实践二分法查找的宝贵资源。

    二分查找 杨辉三角 数组便利

    如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 代码中...

    数据结构之二分法查找和散列查找实验

    二分法查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,每次比较中间元素与目标值,如果目标值等于中间元素,则查找结束;如果目标值小于中间元素,则在左半部分...

    二分法查找在PLC编程中的应用.pdf

    二分法查找是一种高效的查找算法,在有序数组中尤其适用。其基本思想是从已排序数组的中间元素开始查找,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值...

    javascript 二分法(数组array)

    这段测试代码会创建一个包含1到1000的数组,并尝试查找值为678的元素。 另一种实现来自国外的代码,同样实现了二分查找功能: ```javascript function binarySearch(items, value){ var startIndex = 0, ...

    二分法.zip_C++_二分法_二分法查找vc++

    二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它主要利用了数组的有序性,通过不断将搜索空间减半来快速定位目标值。二分查找在计算机科学中有着广泛的应用,特别是在大量数据处理、数据库...

    二分法数据查找C语言实现

    二分查找(Binary Search),也称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。二分查找采用分而治之的策略,通过将查找区间分成前后两部分来减少查找范围,从而提高查找效率。在理想情况下,二分...

    js代码-二分法寻找数组元素

    1. **功能描述**:简述`main.js`中实现的功能,即使用二分法查找数组元素。 2. **使用方法**:如何导入和调用`binarySearch`函数,以及需要传递的参数类型。 3. **注意事项**:可能包括数组必须是已排序的,目标值的...

Global site tag (gtag.js) - Google Analytics