php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现
内容导读
收集整理的这篇技术教程文章主要介绍了php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3873字,纯文字阅读大概需要6分钟。
内容图文
本篇文章给大家带来的内容是关于php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、冒泡排序
基本思想:
对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换。这样比较小(大)的数值就将逐渐从后面向前面移动。
<?phpfunction mysort($arr){for($i = 0; $i < count($arr); $i++){$isSort = false;for ($j=0; $j< count($arr) - $i - 1; $j++) {if($arr[$j] < $arr[$j+1]){$isSort = true;$temp = $arr[$j];$arr[$j] = $arr[$j+1];$arr[$j+1] = $temp ;}}if($isSort){break;}}return $arr;}$arr = array(3,1,2);var_dump(mysort($arr));?>
二、快速排序
基本思想:
在数组中挑出一个元素(多为第一个)作为标尺,扫描一遍数组将比标尺小的元素排在标尺之前,将所有比标尺大的元素排在标尺之后,通过递归将各子序列分别划分为更小的序列直到所有的序列顺序一致。
<?php//快速排序function quick_sort($arr) {//先判断是否需要继续进行$length = count($arr);if($length <= 1) {return $arr;}$base_num = $arr[0];//选择一个标尺 选择第一个元素//初始化两个数组$left_array = array();//小于标尺的$right_array = array();//大于标尺的for($i=1; $i<$length; $i++) { //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内if($base_num > $arr[$i]) {//放入左边数组$left_array[] = $arr[$i];} else{//放入右边$right_array[] = $arr[$i];}}//再分别对 左边 和 右边的数组进行相同的排序处理方式//递归调用这个函数,并记录结果$left_array = quick_sort($left_array);$right_array = quick_sort($right_array);//合并左边 标尺 右边return array_merge($left_array, array($base_num), $right_array);}$arr = array(3,1,2);var_dump(quick_sort($arr));?>
三、二分查找
基本思想:
假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。(数据量大的时候使用)
<?php//二分查找function bin_search($arr,$low,$high,$k){ if($low <= $high){$mid = intval(($low + $high)/2);if($arr[$mid] == $k){return $mid;}else if($k < $arr[$mid]){return bin_search($arr,$low,$mid-1,$k);}else{return bin_search($arr,$mid+1,$high,$k);}} return -1;}$arr = array(1,2,3,4,5,6,7,8,9,10);print(bin_search($arr,0,9,3));?>
四、顺序查找
基本思想:
从数组的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。
<?php//顺序查找function seq_search($arr,$n,$k){$array[$n] = $k;for($i = 0;$i < $n; $i++){if($arr[$i] == $k) {break;}if($i < $n){return $i;}else{return -1;}}?>
五、写一个函数,能够遍历一个文件下的所有文件和子文件夹
<?php function my_scandir($dir){$files = array();if($handle = opendir($dir)){while (($file = readdir($handle))!== false) {if($file != '..' && $file != '.'){if(is_dir($dir."/".$file)){$files[$file]=my_scandir($dir."/".$file);}else{$files[] = $file;}}}closedir($handle);return $files;}}var_dump(my_scandir('../'));?>
六、写一个函数,尽可能高效的从一个标准url中取出文件的扩展名
<?phpfunction getExt($url){$arr = parse_url($url);//parse_url解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分//'scheme' => string 'http' (length=4)//'host' => string 'www.sina.com.cn' (length=15)//'path' => string '/abc/de/fg.php' (length=14)//'query' => string 'id=1' (length=4)$file = basename($arr['path']);// basename函数返回路径中的文件名部分$ext = explode('.', $file); return $ext[count($ext)-1];}print(getExt('http://www.sina.com.cn/abc/de/fg.html.php?id=1'));?>
七、实现中文字符串截取无乱码的方法
可使用mb_substr,但是需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
相关推荐:
PHP实现冒泡排序,php冒泡排序
php中的冒泡排序,取舍排序,插入排序
以上就是php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现全部内容,希望文章能够帮你解决php中常用的冒泡排序&快速排序算法以及二分查找&顺序查找的算法实现所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。