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
欢迎转载!但请带上文章地址^^