PHP基础算法

<?php

//冒泡排序算法

function maopao($arr){

  $len = count($arr);

  if($len<=1){

    return $arr;

  }

  for($i=1;$i<$len;$i++;){

    for($j=0;$j<$len-$i;$j++){

      if($arr[$j]>$arr[$j+1]){

        $temp  = $arr[$j];

        $arr[$j] = $arr[$j+1];

        $arr[$j+1] = $temp;

      }

    }

  }

  return $arr;

}

//快速排序算法

function quick_sort($arr){

  $len = count($arr);

  if($len <= 1){

    return $arr;

  }

  $left = $right = array();

  for($i=1;$i<$len;$i++;){

    if($arr[0]>$arr[$i]){

      $left[] = $arr[$i];

    }else{

      $right[] = $arr[$j];

    }

  }

  $left = quick_sort($left);

  $right = quick_sort($right);

  return array_merge($left,array($arr[0]),$right);

}

function selectSort($arr) {
  //双重循环完成,外层控制轮数,内层控制比较次数
  $len=count($arr);
  for($i=0; $i<$len-1; $i++) {
    //先假设最小的值的位置
    $p = $i;
    for($j=$i+1; $j<$len; $j++) {
      //$arr[$p] 是当前已知的最小值
      if($arr[$p] > $arr[$j]) {
        //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
        $p = $j;
      }
    }
    //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
    if($p != $i) {
      $tmp = $arr[$p];
      $arr[$p] = $arr[$i];
      $arr[$i] = $tmp;
    }
  }
  //返回最终结果
  return $arr;
}


function insertSort($arr) {
  $len=count($arr);
  for($i=1; $i<$len; $i++) {
    $tmp = $arr[$i];
    //内层循环控制,比较并插入
    for($j=$i-1;$j>=0;$j--) {
      if($tmp < $arr[$j]) {
        //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换
        $arr[$j+1] = $arr[$j];
        $arr[$j] = $tmp;
      } else {
        //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。
        break;
      }
    }
  }
  return $arr;
}

?>

原文地址:https://www.cnblogs.com/missphp/p/9253758.html