Heim  >  Artikel  >  php教程  >  php 矩阵转置 求素数 冒泡排序 选择排序例子

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

WBOY
WBOYOriginal
2016-05-26 08:20:081393Durchsuche

文章为各位初学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."  "; 
	} 
	


本文地址:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn