第一篇:【黑马程序员】php四种基础算法:冒泡,选择,插入和快速...
【黑马程序员】php四种基础算法:冒泡,选择,插入和快
速...许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的。下面是我按自己的理解,将四个方法分析一遍。
需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序。
$arr(1,43,54,62,21,66,32,78,36,76,39);1.冒泡排序法
* 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。* 比如:2,4,1 // 第一次 冒出的泡是4 *
2,1,4 // 第二次 冒出的泡是 2 *
1,2,4 // 最后就变成这样
01 $arr=array(1,43,54,62,21,66,32,78,36,76,39);02 function getpao($arr)03 { 04 $len=count($arr);05 //设置一个空数组 用来接收冒出来的泡 06 //该层循环控制 需要冒泡的轮数 07 for($i=1;$i<$len;$i++)08 { //该层循环用来控制每轮 冒出一个数 需要比较的次数 09 for($k=0;$k<$len-$i;$k++)10 { 11 if($arr[$k]>$arr[$k+1])12 { 13 $tmp=$arr[$k+1];14 $arr[$k+1]=$arr[$k];15 $arr[$k]=$tmp;16 }
黑马程序员济南中心 编著 } 18 } 19 return $arr;20 }
2.选择排序法:
选择排序法思路: 每次选择一个相应的元素,然后将其放到指定的位置
01 function select_sort($arr){ 02 //实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数 03 //$i 当前最小值的位置,需要参与比较的元素 04 for($i=0, $len=count($arr);$i<$len-1;$i++){ 05 //先假设最小的值的位置 06 $p = $i;07 //$j 当前都需要和哪些元素比较,$i 后边的。08 for($j=$i+1;$j<$len;$j++){ 09 //$arr[$p] 是 当前已知的最小值 10 if($arr[$p] > $arr[$j]){ 11 //比较,发现更小的,记录下最小值的位置;并且在下次比较时,12 // 应该采用已知的最小值进行比较。13 $p = $j;14 } 15 } 16 //已经确定了当前的最小值的位置,保存到$p中。//如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可 18 if($p!= $i){ 19 $tmp = $arr[$p];20 $arr[$p] = $arr[$i];21 $arr[$i] = $tmp;22 } 23 } 24 //返回最终结果 25 return $arr;26 }
3.插入排序法
黑马程序员济南中心 编著
插入排序法思路:将要排序的元素插入到已经 假定排序号的数组的指定位置。
01 function insert_sort($arr){ 02 //区分 哪部分是已经排序好的 03 //哪部分是没有排序的 04 //找到其中一个需要排序的元素
05 //这个元素 就是从第二个元素开始,到最后一个元素都是这个需要排序的元素 06 //利用循环就可以标志出来
07 //i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了,08 //间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列 09 for($i=1, $len=count($arr);$i<$len;$i++){ 10 //获得当前需要比较的元素值。11 $tmp = $arr[$i];12 //内层循环控制 比较 并 插入 13 for($j=$i-1;$j>=0;$j--){ 14 //$arr[$i];//需要插入的元素;$arr[$j];//需要比较的元素 15 if($tmp < $arr[$j]){ 16 //发现插入的元素要小,交换位置 17 //将后边的元素与前面的元素互换 18 $arr[$j+1] = $arr[$j];19 //将前面的数设置为 当前需要交换的数 20 $arr[$j] = $tmp;21 } else { 22 //如果碰到不需要移动的元素 //由于是已经排序好是数组,则前面的就不需要再次比较了。24 break;25 } 26 } 27 } 28 //将这个元素 插入到已经排序好的序列内。29 //返回 30 return $arr;31 }
4.快速排序法
01 function quick_sort($arr){ 02 //先判断是否需要继续进行 03 $length = count($arr);04 if($length <= 1){ 05 return $arr;
黑马程序员济南中心 编著
06 } 07 //如果没有返回,说明数组内的元素个数 多余1个,需要排序 08 //选择一个标尺 09 //选择第一个元素 10 $base_num = $arr[0];11 //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内 12 //初始化两个数组 $left_array = array();//小于标尺的 14 $right_array = array();//大于标尺的 15 for($i=1;$i<$length;$i++){ 16 if($base_num > $arr[$i]){ 17 //放入左边数组 $left_array[] = $arr[$i];19 } else { 20 //放入右边 $right_array[] = $arr[$i];22 } 23 } 24 //再分别对 左边 和 右边的数组进行相同的排序处理方式 25 //递归调用这个函数,并记录结果 $left_array = quick_sort($left_array);27 $right_array = quick_sort($right_array);28 //合并左边 标尺 右边 return array_merge($left_array, array($base_num), $right_array);30 }
黑马程序员济南中心 编著
第二篇:黑马程序员:PHP零基础同学如何学习
零基础大学生们该如何学习php?
我们都知道,php语言作为一种专业建站的语言,没有华而不实,而是经受住了时间考验,成为一种值得学习的语言。现在国内众多的php学校也说明,php语言在当今有着广泛的市场需求。那么零基础的大学生们如何学习php呢?
对于零基础的大学生们来说,学习php肯定是非常需要毅力的。任何语言的学习都不可能一蹴而就,而是需要花大量时间,消耗大量精力才能学会的。也并不是报了某个班就一定能够学会。这绝不是打消想立志从事php从业的同学的积极性。想想学会php,要接触的东西实在是太多,不仅html标记,div+css,js这些前台知识需要懂得,而且php语言,samrty模版,ajax,jquery,mysql,linux等等也都需要学习和了解,就是应用工具如框架,也不是一天两天就能够掌握的。
学php难吗?难!但是任何一门技术,如果轻易就能够让人学会,那也不会称作为技术,因为那样,工作的可替代性太强了。技术,只有难学才会更有价值。学php有没有技巧,当然有,这也是我在这篇文章想说明的。
php学习第一要点:心态。虽然目前php语言市场火爆,而且php语言相对于其他的语言来说也更容易学习,但是千万别把php想的太简单,不要全信培训学校的宣传,仿佛零基础的人也能够随随便便就将php学会。失败的案例肯定不少。当然我们也不要把php想的太难,既然你想从事这方面的工作,那么就要准备全力以赴,破釜沉舟。4个月学会不会,那就坚持到5个月,5个月还不会,那就坚持到6个月。总有一天,你会全面掌握php知识,拿到自己满意的薪酬。
php学习的第二要点:就是学习方法。在这里,建议大家还是报一个班。一个人学习php,太难,如果说有一群人一起来学习,就能够营造出一种学习php的氛围,有老师教,学习php碰到的问题也可以得到解决。在这里,就会碰到一个问题,那就是一个班,有零基础的,有从事过这方面工作的,php水平可谓是参差不齐,如果是一个零基础的同学学习php,你如何跟上学校的讲课进度? 这里就是我要讲的学习方法,在我们报班前,可以先去网上下载php学习的相关视频,比如网上非常流行的韩顺平的php系列视频(声明:韩老师没给我啥好处费,我也不是托,隔着大老远,我连他老兄的面都没见过的说-_-),就讲的非常好。韩老师的视频讲的很深入、生动,而且有笔记可供下载学习。如果我们把韩老师的视频都看了一两遍再去报班学习php,效果肯定和没看视频效果不一样。
php学习的第三要点:那就是坚持坚持再坚持。抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让我们新手无所适从,也许学了一半PHP,我们又开始打C#的主意,或者有人说JAVA很强,这个时候的我们绝对不能动摇,哪怕我们真想学,也得学会了PHP,然后再学。见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历。当我们花费了大量精力后却又放弃了php,相信我们的心里面会很难过,对未来又会陷入到迷茫中。如果不想有这种体验,那就坚持学会php吧。
第三篇:黑马程序员_PHP_课程同步笔记day13:PHP基础介绍
【黑马程序员】PHP课程同步笔记day13:PHP基础介绍
1.语言基础
PHP文件的访问,必须要经过虚拟空间(域名),才能访问PHP文件,不能本地直接访问 Php文件的扩展名:.php Php代码的标记: Php区分大小写。但是函数名和关键字不区分大小写。每一条语句,必须以英文下的分号(;)结束。2.语句结束符
每一条PHP语句,都要以英文状态下的分号(;)结束。
PHP中的语法结构(if、switch、for、while、do while、function、foreach等)不能加分号(;)结尾。
如果PHP代码中,只有一条语句的话,可以省略分号;如果是多条PHP语句,最后一条语句可以省略分号。3.注释
HTML注释: CSS注释:/* */
黑马程序员济南中心 编著
JS注释://或/* */ PHP的单行注释://或# PHP的多行注释:/* */ 注意:
PHP多行注释不能嵌套
PHP的注释在浏览器端同样看不见
PHP变量
1.变量的概念
变量是临时存储数据的容器 变量是在内存中存在和运行的
变量是一个代号。用变量来代替一个数据 2.变量命名规则
变量名称包含的字符有:a-z、A-Z、0-
9、_ 变量名只能以字母或下划线开头 变量名不能以数字开头
PHP的变量前,必须加”$”符号。”$”不是变量名称的一部分。”$”之后为变量名
PHP变量是区分大小写的
PHP关键字,也可以作为变量名称。如$if、$while等 PHP长文件名如何表示
“驼峰式命名”:$getUserName “下划线式命名”:$get_user_name
黑马程序员济南中心 编著
PHP变量操作
1.定义变量
PHP的变量不用提前定义,用的时候直接赋值即可.$name = “abc”;JS的变量在使用时要提前声明。Var name=”abc”;2.变量赋值
使用”=”赋值号,给变量进行赋值(往容器中装东西)。
“=”含义:将”=”右边的运算结果,赋值给”=”左边的变量名称,左边不能是一个运算表达式。
举例:$a = $b + 10*24-26 3.读取变量值
$name = “Mary”;Echo “我的名字叫$name”;4.判断变量是否存在isset()如果一个变量的值不等于NULL,就返回TRUE,反之返回FALSE 5.判断变量是否为空empty()对于empty来说,0、””、”0”、0.0、NULL、FALSE、array()认为是空,返回TRUE,反之就返回FALSE.6.删除变量unset()Unset()函数
语法:void unset(mixed $var[,mixed$....])提示:变量被删除后,变量的返回值为NULL。
黑马程序员济南中心 编著
变量的值传递和引用传递
1、值传递
将变量的值”复制”一份,传给另一个变量。
这两个变量之间没有任何联系,修改其中一个,另一个变量的值不会改变。在PHP中,哪些数据类型,默认是”值传递”。包括:字符型、整形、浮点型、布尔型、数组、NULL。
在JS中,默认是”值传递”包括:字符型、数值型、布尔型、undefined、NULL
黑马程序员济南中心 编著
2.引用传地址
将一个变量的数据地址,”复制”一份,传给另一个变量。这两个变量,指向同一份数据。
在PHP中,默认传地址的数据类型有:对象、资源。在JS中,默认传地址的数据类型有:数组、对象、函数。
但是在PHP 中,也可以让所有其他类似数据,都变成”引用传地址”,只需在引用的变量名前加”&”符号.黑马程序员济南中心 编著
可变变量
一个变量的名称,可以用另一个变量的值来充当。如$$name;
实例:批量获取表单提交值 代码:
if(isset($_POST['ac'])&&$_POST['ac'] == “login”){
黑马程序员济南中心 编著
foreach($_POST as $key=>$value){
/*
$$key = $value
$username = $key;
$password = $value
*/
$$key = $value;//可变变量
}
$sql = “INSERT INTO 007_news(username,password)VALUES('$username','$password')”;
echo $sql.“
”;} ?> PHP超全局变量数组
1.PHP中的超全局变量数组
$_GET:获取地址栏中传递的参数。
黑马程序员济南中心 编著
$_POST:获取表单method=”post”提交的数据
$_REQUEST:包含$_GET、$_POST、$_COOKIE上数组中的数据 $_SERVER:获取apache服务器或执行环境的相关信息 $GLOBALS:获取全局变量的各个数据 $_SESSION:跟踪用户 $_COOKIE:跟踪用户 $_FILES:上传文件 2.超全局变量$_POST的使用
描述:主要用来获取表单method=”post”提交的数据。举例:$username = $_POST[‘username’];3.实例:简单PHP计算器 代码实现:
if(isset($_POST['ac'])&&$_POST['ac'] == ”login“){
// 获取表单提交值
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$operator = $_POST['operator'];
//计算结果
switch($operator){
黑马程序员济南中心 编著
case 1:
$result = $value1 + $value2;
break;
case 2:
$result = $value1-$value2;
break;
case 3:
$result = $value1 * $value2;
break;
case 4:
$result = $value1 / $value2;
break;
case 5:
$result = $value1 % $value2;
} }else{
//网页首页下载完成时,变量初始化
$value1 = ”“;
$value2 = ”“;
$operator =1;
$result = ”“;}
黑马程序员济南中心 编著
?>
超全局变量$_GET的使用$_GET可以获取地址栏中参数的数组
发送GET数据的方法总结
1.通过表单method=”get”发送
2.通过发送GET数据
黑马程序员济南中心 编著
3.通过JS的location对象也可以发送GET数据
4.使用PHP的header()函数传递参数
黑马程序员济南中心 编著
黑马程序员济南中心 编著