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

作者:袖梨 2022-06-24

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

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

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

例子

 代码如下 复制代码

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 "
转置前的矩阵:";
foreach($matrix as $line){
 echo "
";
 foreach($line as $value){
  echo $value."  ";
 }
}
$tm=transposition($matrix);
echo "
转置后的矩阵:";
foreach($tm as $line){
 echo "
";
 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 "
2~{$n}内的素数有:
";
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 "
冒泡排序前:
";
foreach($data as $value){
 echo $value."  ";
}
$data=bubblingsort($data);
echo "
由小到大排序后:
";
foreach($data as $value){
 echo $value."  ";
}
$data=bubblingsort($data,1);
echo "
由大到小排序后:
";
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 "
选择排序前:
";
foreach($data as $value){
 echo $value."  ";
}
$data=selectsort($data);
echo "
由小到大排序后:
";
foreach($data as $value){
 echo $value."  ";
}
$data=selectsort($data,1);
echo "
由大到小排序后:
";
foreach($data as $value){
 echo $value."  ";
}
?>

相关文章

精彩推荐