PHP数据结构基本算法一:矩阵转置 求素数 冒泡排序 选择排序
2013-07-30 23:42
323 查看
<?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." "; } } $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." "; } ?>
相关文章推荐
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- java基本算法总结(冒泡排序、选择排序、插入排序)
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 常用算法--基本排序算法(冒泡排序,选择排序,插入排序,快速排序,归并排序,桶排序)
- 几种基本的排序算法:选择排序、插入排序、冒泡排序
- 内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
- [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
- 算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序
- 数据结构与算法——冒泡排序,选择排序,直接插入排序
- 基本算法--选择排序
- 基本的排序算法之—— 冒泡排序(稳定)(对于固定的内存空间数组或顺序表,对于单链表也可以)
- 简单排序算法之插入排序、选择排序和冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 算法复习--------------基本算法:顺序查找,选择排序,冒泡排序算法等简单算法
- 算法与数据结构——排序(二)冒泡排序(上)
- 数据结构只选择排序、冒泡排序、插入排序
- 算法笔记_008:选择排序和冒泡排序【蛮力法】