zoukankan      html  css  js  c++  java
  • 七大常用PHP算法

    1、冒泡排序
    2、归并排序
    3、二分查找-递归
    4、二分查找-非递归
    5、快速排序
    6、选择排序
    7、插入排序
    下面一一示例介绍
    1、冒泡排序
    function bubble_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n-1;$i++){
    for($j=$i+1;$j<$n;$j++) {
    if($arr[$j]<$arr[$i]) {
    $temp=$arr[$i];
    $arr[$i]=$arr[$j];
    $arr[$j]=$temp;
    }
    }
    }
    return $arr;
    }

    2、归并排序
    function Merge(&$arr, $left, $mid, $right) {
    $i = $left;
    $j = $mid + 1;
    $k = 0;
    $temp = array();
    while ($i <= $mid && $j <= $right)
    {
    if ($arr[$i] <= $arr[$j])
    $temp[$k++] = $arr[$i++];
    else
    $temp[$k++] = $arr[$j++];
    }
    while ($i <= $mid)
    $temp[$k++] = $arr[$i++];
    while ($j <= $right)
    $temp[$k++] = $arr[$j++];
    for ($i = $left, $j = 0; $i <= $right; $i++, $j++)
    $arr[$i] = $temp[$j];
    }

    function MergeSort(&$arr, $left, $right)
    {
    if ($left < $right)
    {
    $mid = floor(($left + $right) / 2);
    MergeSort($arr, $left, $mid);
    MergeSort($arr, $mid + 1, $right);
    Merge($arr, $left, $mid, $right);
    }
    }

    3、二分查找-递归
    function bin_search($arr,$low,$high,$value) {
    if($low>$high)
    return false;
    else {
    $mid=floor(($low+$high)/2);
    if($value==$arr[$mid])
    return $mid;
    elseif($value<$arr[$mid])
    return bin_search($arr,$low,$mid-1,$value);
    else
    return bin_search($arr,$mid+1,$high,$value);
    }
    }

    4、二分查找-非递归
    function bin_search($arr,$low,$high,$value) {
    while($low<=$high) {
    $mid=floor(($low+$high)/2);
    if($value==$arr[$mid])
    return $mid;
    elseif($value<$arr[$mid])
    $high=$mid-1;
    else
    $low=$mid+1;
    }
    return false;
    }

    5、快速排序
    function quick_sort($arr) {
    $n=count($arr);
    if($n<=1)
    return $arr;
    $key=$arr[0];
    $left_arr=array();
    $right_arr=array();
    for($i=1;$i<$n;$i++) {
    if($arr[$i]<=$key)
    $left_arr[]=$arr[$i];
    else
    $right_arr[]=$arr[$i];
    }
    $left_arr=quick_sort($left_arr);
    $right_arr=quick_sort($right_arr);
    return array_merge($left_arr,array($key),$right_arr);
    }

    6、选择排序
    function select_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n;$i++) {
    $k=$i;
    for($j=$i+1;$j<$n;$j++) {
    if($arr[$j]<$arr[$k])
    $k=$j;
    }
    if($k!=$i) {
    $temp=$arr[$i];
    $arr[$i]=$arr[$k];
    $arr[$k]=$temp;
    }
    }
    return $arr;
    }

    7、插入排序
    function insertSort($arr) {
    $n=count($arr);
    for($i=1;$i<$n;$i++) {
    $tmp=$arr[$i];
    $j=$i-1;
    while($arr[$j]>$tmp) {
    $arr[$j+1]=$arr[$j];
    $arr[$j]=$tmp;
    $j--;
    if($j<0)
    break;
    }
    }
    return $arr;
    }

  • 相关阅读:
    Java对象的生命周期与作用域的讨论(转)
    [置顶] Oracle学习路线与方法
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
  • 原文地址:https://www.cnblogs.com/jevil/p/2974988.html
Copyright © 2011-2022 走看看