当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-08 15:27:57 浏览: 评论:0 

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

Tags: php矩阵转置 php冒泡排序

分享到: