首页 > 代码库 > 一些算法

一些算法

//木桶排序
/* 首先产生两个数字,最大值和最小值,然后根据两个数字的值决定要创建多少个桶装数据,
每个 桶装数据按key编好号码,按数组内的数字指定桶的出现次数。
然后输出所有指定桶。木桶算法是不稳定算法。
*/
$count = array(6,10,4,12,4,90,33);

function mutong($max,$array)
{
  //填充木桶
  $arr = array_fill(0, $max, 0);//函数用给定的键值填充数组
  //开始标示木桶
  for($i = 0; $i<=count($array)-1 ; $i++){
    //var_dump($array[$i]);
    isset($arr[$array[$i]])? $arr[$array[$i]]++ : "";
  }
  $mutomg = array();
  //开始从木桶中拿出数据
  for($i = 0; $i<= $max ; $i++){
    $arr[$i] = isset($arr[$i]) ? $arr[$i] : "";
    for($j = 1; $j <= $arr[$i]; $j++){ //这一行主要用来控制输出多个数字
      $mutong[] = $i;
    }
  }
  return $mutong;
}
$max = max($count);//90
print_r(mutong($max,$count));

//冒泡算法
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function getpao($arr)
{
  $len=count($arr);
  //设置一个空数组 用来接收冒出来的泡
  //该层循环控制 需要冒泡的轮数
  for($i=1;$i<$len;$i++){ //该层循环用来控制每轮 冒出一个数 需要比较的次数
    for($k=0;$k<$len-$i;$k++){
      if($arr[$k]>$arr[$k+1]){
        $tmp=$arr[$k+1];
        $arr[$k+1]=$arr[$k];
        $arr[$k]=$tmp;
       }
    }
  }
  return $arr;
}
var_dump(getpao($arr));

一些算法