首页 > 开发 > PHP > 正文

php 矩阵转置 求素数 冒泡排序 选择排序例子

2024-05-04 21:59:59
字体:大 中 小
来源:转载
供稿:网友

文章为各位初学php的朋友提供一篇关于php 矩阵转置 求素数 冒泡排序 选择排序例子,希望这个例子可以帮助到各位朋友哦.

关于矩阵转置:矩阵是指纵横排列的二维数据表格

关于求素数:质数公式,又称素数公式,在数学领域中,表示一种能够仅产生质数(素数)的公式,即是说,这个公式能够一个不漏地产生所有的质数,并且对每个输入的值,此公式产生的结果都是质数,由于质数的个数是可数的,因此一般假设输入的值是自然数集(或整数集及其它可数集),迄今为止,人们尚未找到易于计算且符合上述条件的质数公式,但对于质数公式应该具备的性质已经有了大量的了解.

冒泡选择排序:是两种排序方法就不介绍了.

例子代码如下:

  1. <?php 
  2. header("content-type:text/html;charset=utf-8"); 
  3. /** 
  4.  * 
  5.  * PHP版数据结构基本算法 
  6.  * 1.矩阵转置 
  7.  * 2.求素数 
  8.  * 3.冒泡排序 
  9.  * 4.选择排序 
  10.  *//** 
  11.  * 矩阵转置 
  12.  * 
  13.  * @param array $matrix 待转置的矩阵 
  14.  * @param array return 转置后的矩阵 
  15.  * */ 
  16. function transposition($matrix){ 
  17.  $i=0; 
  18.  $j=0; 
  19.  foreach($matrix as $line){ 
  20.   foreach($line as $element){ 
  21.    $tm[$j++][$i]=$element; 
  22.   } 
  23.   $j=0; 
  24.   $i++; 
  25.  } 
  26.  return $tm; 
  27. } 
  28. $matrix=array( 
  29.  array(1,2,3,'a'), 
  30.  array(4,5,6,'b'), 
  31.  array(7,8,9,'c'), 
  32. ); 
  33. echo "<br/>转置前的矩阵:"; 
  34. foreach($matrix as $line){ 
  35.  echo "<br/>"; 
  36.  foreach($line as $value){ 
  37.   echo $value."&nbsp;&nbsp;"; 
  38.  } 
  39. } 
  40. $tm=transposition($matrix); 
  41. echo "<br/>转置后的矩阵:"; 
  42. foreach($tm as $line){ 
  43.  echo "<br/>"; 
  44.  foreach($line as $element){ 
  45.   echo $element."&nbsp;&nbsp;"; 
  46.  } 
  47. }/** 
  48.  * 求素数 
  49.  *@param int  $n 求2~$n内的所有素数 
  50.  *@return array 返回2~$n所有的素数集合 
  51.  **/ 
  52. function primenumber($n){ 
  53.  $i=3; 
  54.  $prime=array(2); 
  55.  $tag=true; 
  56.  while($i<=$n){ 
  57.   foreach($prime as $value){ 
  58.    if($i % $value == 0){ 
  59.     $tag=false; 
  60.     break; 
  61.    } 
  62.    $tag=true; 
  63.   } 
  64.   if($tag){ 
  65.    $prime[]=$i; 
  66.   } 
  67.   $i++; 
  68.  } 
  69.  return $prime; 
  70. } 
  71. $n=200; 
  72. $prime=primenumber($n); 
  73. echo "<br />2~{$n}内的素数有:<br />"; 
  74. foreach($prime as $value){ 
  75.  echo $value."&nbsp;&nbsp;"; 
  76. }/** 
  77.  * 冒泡排序 
  78.  * 
  79.  *@param array $data 待排序的数组 
  80.  *@param int $tag 0表示由小到大排序,1表示由大到小排序 
  81.  *@param array 排序后的结果 
  82.  **/ 
  83. function bubblingsort($data,$tag=0){ 
  84.  $arrlen=count($data); 
  85.  for($i=$arrlen-1;$i>=0;$i--){ 
  86.   for($j=0;$j<$i;$j++){ 
  87.    if($data[$i] > $data[$j]){ 
  88.     if($tag == 1){ 
  89.      $m=$data[$j]; 
  90.      $data[$j]=$data[$i]; 
  91.      $data[$i]=$m; 
  92.     } 
  93.    }else{ 
  94.     if($tag == 0){ 
  95.      $m=$data[$i]; 
  96.      $data[$i]=$data[$j]; 
  97.      $data[$j]=$m; 
  98.     } 
  99.    } 
  100.   } 
  101.  } 
  102.  return $data; 
  103. } 
  104. $data=array(34,22,2,56,90); 
  105. echo "<br/>冒泡排序前:<br/>"; 
  106. foreach($data as $value){ 
  107.  echo $value."&nbsp;&nbsp;"; 
  108. } 
  109. $data=bubblingsort($data); 
  110. echo "<br/>由小到大排序后:<br/>"; 
  111. foreach($data as $value){ 
  112.  echo $value."&nbsp;&nbsp;"; 
  113. } 
  114. $data=bubblingsort($data,1); 
  115. echo "<br/>由大到小排序后:<br/>"; 
  116. foreach($data as $value){ 
  117.  echo $value."&nbsp;&nbsp;"; 
  118. } 
  119. /** 
  120.  * 选择排序 
  121.  * 
  122.  *@param array $data 待排序的数组 
  123.  *@param int $tag 0表示由小到大排序,1表示由大到小排序 
  124.  *@param array 排序后的结果 
  125.  **/ 
  126. function selectsort($data,$tag=0){ 
  127.  $arrlen=count($data); 
  128.  for($i=0;$i<$arrlen-1;$i++){ 
  129.   for($j=$i+1;$j<$arrlen;$j++){ 
  130.    if($data[$i] > $data[$j]){ 
  131.     if($tag == 0){ 
  132.      $m=$data[$i]; 
  133.      $data[$i]=$data[$j]; 
  134.      $data[$j]=$m; 
  135.     } 
  136.    }else{ 
  137.     if($tag == 1){ 
  138.      $m=$data[$i]; 
  139.      $data[$i]=$data[$j]; 
  140.      $data[$j]=$m; 
  141.     } 
  142.    } 
  143.   } 
  144.  } 
  145.  return $data; 
  146. } 
  147. $data=array(34,22,2,56,90); 
  148. echo "<br/>选择排序前:<br/>"; 
  149. foreach($data as $value){ 
  150.  echo $value."&nbsp;&nbsp;"; 
  151. }  //开源软件:Vevb.com 
  152. $data=selectsort($data); 
  153. echo "<br/>由小到大排序后:<br/>"; 
  154. foreach($data as $value){ 
  155.  echo $value."&nbsp;&nbsp;"; 
  156. } 
  157. $data=selectsort($data,1); 
  158. echo "<br/>由大到小排序后:<br/>"; 
  159. foreach($data as $value){ 
  160.  echo $value."&nbsp;&nbsp;"; 
  161. } 
  162. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表