首页 > 学院 > 逻辑算法 > 正文

PHP实现几个排序和查找算法

2020-03-22 18:04:01
字体:
来源:转载
供稿:网友
冒泡排序,快速排序,二分查找,虽然简单,但是一段时间不用的话就很容易忘记,这里是小编找来的用PHP实现代码,分享给大家一起来学习一下。

排序冒泡排序

每一次冒出一个最大的值

function bubbleSort($arr) $count = count($arr); if ($count == 0) return false; for ($i = 0; $i $count - 1; $i++) { for ($k = 0; $k $count - 1 - $i; $k++) { if ($arr[$k] $arr[$k + 1]) { $tmp = $arr[$k]; $arr[$k] = $arr[$k + 1]; $arr[$k + 1] = $tmp; return $arr;}
快速排序

选择一个值作为基准,比他小的放在左边,比他大的放在右边,然后对左右递归,最后合并

function quickSort($arr) $count = count($arr); if ($count = 1) return $arr; $base = $arr[0]; $left = $right = []; for ($i = 1; $i $count; $i++) { if ($arr[$i] $base) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; $left = quickSort($left); $right = quickSort($right); return array_merge($left, [$base], $right);}
选择排序

选择一个值假设为最小,然后依次比较,发现比他小的就互换位置

function selectSort($arr) $count = count($arr); if ($count = 1) return $arr; for ($i = 0; $i $count; $i++) { //假设最小值位置 $p = $i; //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换 for ($j = $i + 1; $j $count; $j++) { if ($arr[$p] $arr[$j]) { $p = $j; if ($p != $i) { $tmp = $arr[$p]; $arr[$p] = $arr[$i]; $arr[$i] = $tmp; return $arr;}
查找二分查找

二分查找必须是一个排序好的数组,每次拿数组中间位置的值与目标进行比较

function binarySearch(array $arr, $target) $low = 0; $high = count($arr) - 1; while ($low = $high) { $middle = floor(($high + $low) / 2); if ( $arr[$middle] == $target ) { return $middle; } elseif ( $arr[$middle] $target ) { $low = $middle + 1; } else { $high = $middle - 1; return false;}

推荐教程:PHP视频教程

以上就是PHP实现几个排序和查找算法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表