php 矩阵转置 求素数 冒泡排序 选择排序例子
文章为各位初学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 . " "; } ?>
教程地址:http://www.phprm.com/code/75709.html
欢迎转载!但请带上文章地址^^