php 矩陣轉置 求素數 冒泡排序 選擇排序例子

來源:互聯網
上載者:User

關於矩陣轉置:矩陣是指縱橫排列的二維資料表格

關於求素數:質數公式,又稱素數公式,在數學領域中,表示一種能夠僅產生質數(素數)的公式。即是說,這個公式能夠一個不漏地產生所有的質數,並且對每個輸入的值,此公式產生的結果都是質數。由於質數的個數是可數的,因此一般假設輸入的值是自然數集(或整數集及其它可數集)。迄今為止,人們尚未找到易於計算且符合上述條件的質數公式,但對於質數公式應該具備的性質已經有了大量的瞭解

冒泡選擇排序:是兩種排序方法就不介紹了

例子

 代碼如下 複製代碼

<?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,'a'),
 array(4,5,6,'b'),
 array(7,8,9,'c'),
);
echo "<br/>轉置前的矩陣:";
foreach($matrix as $line){
 echo "<br/>";
 foreach($line as $value){
  echo $value."&nbsp;&nbsp;";
 }
}
$tm=transposition($matrix);
echo "<br/>轉置後的矩陣:";
foreach($tm as $line){
 echo "<br/>";
 foreach($line as $element){
  echo $element."&nbsp;&nbsp;";
 }
}/**
 * 求素數
 *@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."&nbsp;&nbsp;";
}/**
 * 冒泡排序
 *
 *@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."&nbsp;&nbsp;";
}
$data=bubblingsort($data);
echo "<br/>由小到大排序後:<br/>";
foreach($data as $value){
 echo $value."&nbsp;&nbsp;";
}
$data=bubblingsort($data,1);
echo "<br/>由大到小排序後:<br/>";
foreach($data as $value){
 echo $value."&nbsp;&nbsp;";
}
/**
 * 選擇排序
 *
 *@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."&nbsp;&nbsp;";
}
$data=selectsort($data);
echo "<br/>由小到大排序後:<br/>";
foreach($data as $value){
 echo $value."&nbsp;&nbsp;";
}
$data=selectsort($data,1);
echo "<br/>由大到小排序後:<br/>";
foreach($data as $value){
 echo $value."&nbsp;&nbsp;";
}
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.