文章为各位初学php的朋友提供一篇关于php 矩阵转置 求素数 冒泡排序 选择排序例子,希望这个例子可以帮助到各位朋友哦.
关于矩阵转置:矩阵是指纵横排列的二维数据表格
关于求素数:质数公式,又称素数公式,在数学领域中,表示一种能够仅产生质数(素数)的公式,即是说,这个公式能够一个不漏地产生所有的质数,并且对每个输入的值,此公式产生的结果都是质数,由于质数的个数是可数的,因此一般假设输入的值是自然数集(或整数集及其它可数集),迄今为止,人们尚未找到易于计算且符合上述条件的质数公式,但对于质数公式应该具备的性质已经有了大量的了解.
冒泡选择排序:是两种排序方法就不介绍了.
例子代码如下:
<?php header("content-type:text/html;charset=utf-8"); /** * * PHP版数据结构基本算法 * 1.矩阵转置 * 2.求素数 * 3.冒泡排序 * 4.选择排序 *//** * 矩阵转置 * * @param array $matrix 待转置的矩阵 * @param array return 转置后的矩阵 * */ function transposition($matrix){ $i=0; $j=0; foreach($matrix as $line){ foreach($line as $element){ $tm[$j++][$i]=$element; } $j=0; $i++; } return $tm; } $matrix=array( array(1,2,3,'a'), array(4,5,6,'b'), array(7,8,9,'c'), ); echo "<br/>转置前的矩阵:"; foreach($matrix as $line){ echo "<br/>"; foreach($line as $value){ echo $value." "; } } $tm=transposition($matrix); echo "<br/>转置后的矩阵:"; foreach($tm as $line){ echo "<br/>"; foreach($line as $element){ echo $element." "; } }/** * 求素数 *@param int $n 求2~$n内的所有素数 *@return array 返回2~$n所有的素数集合 **/ function primenumber($n){ $i=3; $prime=array(2); $tag=true; while($i<=$n){ foreach($prime as $value){ if($i % $value == 0){ $tag=false; break; } $tag=true; } if($tag){ $prime[]=$i; } $i++; } return $prime; } $n=200; $prime=primenumber($n); echo "<br />2~{$n}内的素数有:<br />"; foreach($prime as $value){ echo $value." "; }/** * 冒泡排序 * *@param array $data 待排序的数组 *@param int $tag 0表示由小到大排序,1表示由大到小排序 *@param array 排序后的结果 **/ function bubblingsort($data,$tag=0){ $arrlen=count($data); for($i=$arrlen-1;$i>=0;$i--){ for($j=0;$j<$i;$j++){ if($data[$i] > $data[$j]){ if($tag == 1){ $m=$data[$j]; $data[$j]=$data[$i]; $data[$i]=$m; } }else{ if($tag == 0){ $m=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$m; } } } } return $data; } $data=array(34,22,2,56,90); echo "<br/>冒泡排序前:<br/>"; foreach($data as $value){ echo $value." "; } $data=bubblingsort($data); echo "<br/>由小到大排序后:<br/>"; foreach($data as $value){ echo $value." "; } $data=bubblingsort($data,1); echo "<br/>由大到小排序后:<br/>"; foreach($data as $value){ echo $value." "; } /** * 选择排序 * *@param array $data 待排序的数组 *@param int $tag 0表示由小到大排序,1表示由大到小排序 *@param array 排序后的结果 **/ function selectsort($data,$tag=0){ $arrlen=count($data); for($i=0;$i<$arrlen-1;$i++){ for($j=$i+1;$j<$arrlen;$j++){ if($data[$i] > $data[$j]){ if($tag == 0){ $m=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$m; } }else{ if($tag == 1){ $m=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$m; } } } } return $data; } $data=array(34,22,2,56,90); echo "<br/>选择排序前:<br/>"; foreach($data as $value){ echo $value." "; } $data=selectsort($data); echo "<br/>由小到大排序后:<br/>"; foreach($data as $value){ echo $value." "; } $data=selectsort($data,1); echo "<br/>由大到小排序后:<br/>"; foreach($data as $value){ echo $value." "; }
本文地址:
转载随意,但请附上文章地址:-)