ホームページ > php教程 > php手册 > php 矩阵转置 求素数 冒泡排序 选择排序例子

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

WBOY
リリース: 2016-05-26 08:20:08
オリジナル
1421 人が閲覧しました

文章为各位初学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,&#39;a&#39;), 
	 array(4,5,6,&#39;b&#39;), 
	 array(7,8,9,&#39;c&#39;), 
	); 
	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."  "; 
	} 
	
ログイン後にコピー


本文地址:

转载随意,但请附上文章地址:-)

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート