`
mars李
  • 浏览: 50987 次
  • 性别: Icon_minigender_1
  • 来自: 柳州
社区版块
存档分类
最新评论

二分法和快速排序的PHP实现

阅读更多
//二分法
function binarySearch($a, $val){
$low = 0;
$high= count($a) - 1;
while($low <= $high){
$mid = intval(($low+$high)/2);
if($a[$mid] == $val) return $mid;
if($a[$mid] > $val){
$high = $mid - 1;
}else{
$low = $mid + 1;
}
}
return -1;
}

//快速排序算法
function quickSort(&$a, $l, $r){
if($l >= $r) return;
$m = pation($a, $l, $r);
quickSort($a, $l, $m-1);
quickSort($a, $m+1, $r);
}

function pation(&$a, $l, $r){
$pivot = $a[$l];
$i = $l + 1;
$j = $r;
while(1){
while($a[$i] > $pivot && $i < $j) $i++;
while($a[$j] < $pivot) $j--;
if($i>=$j) break;
$temp = $a[$i];
$a[$i]= $a[$j];
$a[$j]= $temp;
}
$a[$l] = $a[$j];
$a[$j] = $pivot;
return $j;
}
分享到:
评论

相关推荐

    从互联网上收集的用于采访的常用PHP算法 冒泡、快速排序、二进制排序、二维数组去重、二维数组排序-php-suanfa.zip

    这些算法包括冒泡排序、快速排序、二分法排序、二维数组去重复和二维数组排序。 冒泡排序算法是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的...

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

    这种查找算法可以广泛应用于需要快速定位数据的场合,比如搜索引擎、数据库查询优化等。 最后,了解和掌握不同的查找算法,对于提升编程能力、优化程序性能具有重要意义。除了二分查找,还有线性查找、哈希查找、...

    PHP算法与数据结构学习 案例代码.zip

    虽然效率较低,但理解和实现较为容易。 2. **二分法查找**:在已排序的数组中,通过将目标值与中间元素比较,每次缩小一半的搜索范围,直到找到目标或确定目标不存在。这种方法适用于大数据量的查找操作,时间...

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

    在学习和使用二分查找时,还需要了解其他查找算法,如线性查找、哈希查找等,以及各种排序算法,如冒泡排序、快速排序等,它们都是编程中常用的数据处理工具。通过理解这些算法的原理和应用场景,可以提升解决实际...

    php中二分法查找算法实例分析

    了解和掌握二分查找算法对于提升PHP开发者在解决查找问题时的效率至关重要,尤其是在面试和实际项目中,能够快速实现高效的查找功能。此外,熟悉二分查找还能帮助开发者更好地理解其他高级算法,如堆排序和二分插入...

    史上最难PHPer测试题与其答案

    直接选择排序、二分法排序和冒泡排序都是稳定的排序方法。基数排序也是一种稳定的排序方法,但需要注意实现细节。 #### 15. Redis 数据结构及事务支持 - **题目解析**:Redis 支持哪些数据结构?它是否支持事务? ...

    2021-2022计算机二级等级考试试题及答案No.19980.docx

    二分法检索通常应用于已排序的线性表,通过比较中间元素来快速定位目标值。 PHP 中的变量名是区分大小写的,以 `$` 开头,不能以数字字符开头,且变量名不能以下划线开头(除非是全局变量 $_var)。 索引是数据库...

    2021-2022计算机二级等级考试试题及答案No.11367.docx

    ASP、PHP和Perl更多用于服务器端脚本编写。选项D正确。 #### 第二代计算机逻辑元件 29. **晶体管的应用**:第二代计算机使用晶体管作为逻辑元件,这标志着计算机技术的重大进步。晶体管比第一代计算机使用的电子管...

Global site tag (gtag.js) - Google Analytics