1. 程式人生 > >一些算法

一些算法

號碼 給定 for sset count 冒泡算法 tmp sse arr

//木桶排序
/* 首先產生兩個數字,最大值和最小值,然後根據兩個數字的值決定要創建多少個桶裝數據,
每個 桶裝數據按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));

一些算法